Ingenieria de software

Page 1

IngenierĂ­a de Software

Ing. Huilder Mera Montenegro


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

Cuaderno de Trabajo Ingeniería de Software Autor Ing. Huilder Mera Montenegro

Chiclayo 2013 Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad Católica Santo Toribio de Mogrovejo

Copyright 2013, by the Contributing Authors, Esta obra se publica bajo una Creative Commons License.

Cuaderno de trabajo elaborado para la Escuela de Ing. De Ssitemas y Computación. Facultad de Ingeniería. Universidad Católica Santo Toribio de Mogrovejo-USAT is licensed under a creative Commons Reconocimiento-No Comercial- Compartir Igual 3.0 Unported License

Ing. Huilder Mera Montenegro

2


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

PRESENTACIÓN En la actualidad con el desarrollo y evolución de las tecnologías de la información, el software está presente en todo el mudo. Hoy en día existen muchos dispositivos electrónicos los cuales requieren de un software para su adecuado funcionamiento, así mismo existe también pequeñas, medianas y grandes organizaciones que demandan de un software para gestionar eficientemente el desarrollo de sus actividades. Una de las grandes áreas de la ingeniería de sistemas y computación es la ingeniería del software, esta disciplina convertida en industria es la responsable de producir software de calidad, el mismo que forma parte indispensable y que genera valor agregado a los procesos organizacionales de todos los sectores de nuestra economía como son: La industria manufacturera, la agroindustria, la educación, la salud, las finanzas, la minería, la pesca, el transporte, la agricultura, entre otros. En la economía moderna, la industria del software es la piedra angular de toda innovación tecnológica, ya que impacta en forma directa o indirecta sobre todas las actividades económicas. La demanda por los productos de software y los servicios de información tecnológica tiene una de las tasas de crecimiento mundiales más alta de la actualidad. A la adecuada gestión en cada una de las etapas del desarrollo del software, así como su evolución y el soporte para mantener un producto de calidad en beneficio de organizaciones e individuos, se le conoce como la ingeniería del software. Por lo antes expuesto, producir software de calidad y costeable es esencial para el funcionamiento de la economía nacional y mundial.

Ing. Huilder Mera Montenegro

3


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

INDICE

INDICE DE FIGURAS .................................................................................................................... 6 INDICE DE TABLAS....................................................................................................................... 6 INTRODUCCIÓN .......................................................................................................................... 7 CAPITULO I .................................................................................................................................. 8 1.

2.

EL SOFTWARE .................................................................................................................. 8 1.1.

Definición ....................................................................................................................... 8

1.2.

Clasificación del software ............................................................................................. 8

1.2.1.

Software de sistema............................................................................................... 8

1.2.2.

Software de programación ................................................................................... 9

1.2.3.

Software de aplicación ......................................................................................... 9

1.3.

Importancia.................................................................................................................. 10

1.4.

Evolución ..................................................................................................................... 10

INGENIERÍA DE SOFTWARE ...........................................................................................11 2.1.

Definición ..................................................................................................................... 11

2.2.

El producto software ................................................................................................... 11

2.3.

Atributos de un buen software ................................................................................... 12

2.4.

Ciclo de vida tradicional de un software .................................................................. 12

2.5.

Retos en la ingeniería de software ............................................................................. 14

2.6.

La ética en la ingeniería de software ......................................................................... 15

2.7.

Modelos de proceso de desarrollo de un software .................................................. 17

2.7.1.

Modelo en cascada .............................................................................................. 17

2.7.2.

El modelo de desarrollo evolutivo o incremental ........................................... 18

2.7.3.

El modelo de construcción con prototipos ...................................................... 19

2.8.

Mitos en el desarrollo de software ............................................................................. 19

2.9.

El desarrollo de Software, Sin Ingeniería .................................................................. 21

CAPITULO II ................................................................................................................................23 3.

LA INDUSTRIA DEL SOFTWARE .....................................................................................23 3.1.

Definición ..................................................................................................................... 23

Ing. Huilder Mera Montenegro

4


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

3.2.

Influencia de la globalización en la industria del software ..................................... 24

3.3.

Cosas que se hacen posible con el uso del software ................................................ 24

3.4.

Aspectos generales de la industria del software ....................................................... 25

3.5.

Mercado del software .................................................................................................. 28

3.6.

Beneficios del software para el desarrollo de la economía mundial ..................... 28

3.7.

La industria del software en el Perú .......................................................................... 28

3.8.

Resumen ....................................................................................................................... 29

CAPITULO III ...............................................................................................................................30 4.

METODOLOGÍAS DE DESARROLLO DE SOFTWARE....................................................30 4.1.

Definición ..................................................................................................................... 30

4.2.

Elementos que forman parte de una metodología .................................................. 30

4.3.

Fases comunes en una metodología ......................................................................... 31

4.4.

Ventajas del uso de una metodología ....................................................................... 31

4.4.1.

Desde el punto de vista de gestión..................................................................... 31

4.4.2.

Desde el punto de vista de los ingenieros del software ................................... 32

4.4.3.

Desde el punto de vista del cliente o usuario ................................................... 32

4.5.

Tipos de metodologías de desarrollo de software .................................................... 32

4.5.1.

Metodologías tradicionales................................................................................. 32

4.5.2.

Metodologías ágiles ............................................................................................. 33

4.6.

Que metodología utilizar para desarrollar un proyecto de software .................... 33

4.7.

Metodologías ágiles vs Metodologías tradicionales ................................................. 34

4.8.

Resumen ....................................................................................................................... 35

BIBLIOGRAFÍA ............................................................................................................................35

Ing. Huilder Mera Montenegro

5


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

INDICE DE FIGURAS Figura 1: Ciclo de vida de un software .......................................................................................... 13 Figura 2: Retos en la ingeniería de software ................................................................................. 14 Figura 3: La ética en la ingeniería de software ............................................................................. 16 Figura 4: El proceso del software ................................................................................................... 17 Figura 5: El modelo de proceso de desarrollo de un software, Modelo en cascada ................ 18 Figura 6: El modelo de proceso de desarrollo de un software, Modelo Evolutivo o Incremental ...................................................................................................................................... 18 Figura 7: EL proceso del software, Modelo de construcción con prototipos ............................ 19 Figura 8: Mitos en el desarrollo del software ................................................................................ 20 Figura 9: El desarrollo de Software, Sin Ingeniería ...................................................................... 21 Figura 10: El desarrollo de Software, Sin Ingeniería (2)............................................................... 21 Figura 11: Guía básica del desarrollo del software....................................................................... 22 Figura 12: La industria del software ............................................................................................... 24 Figura 13: Cosas que se hacen posible con el uso del software .................................................. 25 Figura 14: Aspectos generales de la industria del software ......................................................... 25 Figura 15: Certificaciones de calidad ............................................................................................ 26 Figura 16: Ventajas del uso de una metodología ......................................................................... 31 Figura 17: Tipos de metodologías de desarrollo de software ...................................................... 32

INDICE DE TABLAS Tabla 1: Metodologías ágiles vs Metodologías tradicionales ....................................................... 34

Ing. Huilder Mera Montenegro

6


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

INTRODUCCIÓN La producción de software es una actividad económica que se caracteriza por generar un alto valor agregado y aportar a la economía elementos esenciales para su modernización. Se basa en el conocimiento, desarrolla habilidades más allá de la manufactura, propicia la innovación tecnológica y genera empleos bien remunerados para personal altamente calificado, no contamina y requiere de relativamente poco capital para iniciar. El presente cuaderno de trabajo, es producto de una revisión bibliográfica de diferentes autores que hablan sobre una de las más grandes áreas de la ingeniería de sistemas y computación como es la ingeniería del software. Busca proporcionar un resumen de los fundamentos teóricos y prácticos necesarios para el desarrollo de la asignatura de Ingeniería de Software que llevan los estudiantes de la Escuela de Ingeniería de Sistemas y Computación de la Universidad Católica Santo Toribio de Mogrovejo, en esta primera edición consta de 3 capítulos. En el primer capítulo veremos todo lo referente al producto software y la ingeniería del software, en el segundo capítulo se abordará el tema de la industria del software y en el tercer capítulo se hablara sobre las metodologías de desarrollo de software.

Ing. Huilder Mera Montenegro

7


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

CAPITULO I 1. EL SOFTWARE 1.1. Definición Software es la suma total de programas de computadora, procedimientos, reglas, documentación y los datos que pertenecen a un sistema de cómputo. [1] Muchas personas asocian el término software con los programas de computadora. Sin embargo, yo prefiero una definición más amplia donde el software no son sólo programas, sino todos los documentos asociados y la configuración de datos que se necesitan para hacer que estos programas operen de manera correcta y con la finalidad de conseguir un objetivo común. [2] Conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora. [3] El software es un conjunto de programas, los cuales están conformados por código escrito en un lenguaje de maquina específico para un determinado procesador. Este código consta de una secuencia de instrucciones ordenadas y coordinadas, y que al ser ejecutados cambian el estado del hardware de una computadora. El software se suele escribir en un lenguaje de programación de alto nivel, que es más sencillo de escribir (pues es más cercano al lenguaje natural humano), pero debe convertirse a lenguaje máquina para ser ejecutado por el computador. 1.2. Clasificación del software El software puede distinguirse en tres grandes categorías: Software de sistema, Software de programación y Software de aplicación. [4] 1.2.1. Software de sistema Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles del sistema un informático en particular que se use, aislándolo especialmente del procesamiento referido a las características internas como: memoria, discos duros, puertos, dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. Algunos ejemplos conocidos entre otros son:   

Sistemas operativos Controladores de dispositivos Herramientas de diagnóstico

Ing. Huilder Mera Montenegro

8


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

 

Servidores Utilidades, etc.

1.2.2. Software de programación Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluyen básicamente:  Editores de texto  Compiladores  Intérpretes  Enlazadores  Depuradores  Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI). 1.2.3. Software de aplicación Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre muchos otros:  Aplicaciones para Control de sistemas y automatización industrial  Aplicaciones ofimáticas  Software educativo  Software empresarial  Bases de datos  Telecomunicaciones (por ejemplo Internet y toda su estructura lógica)  Videojuegos  Software médico  Software de cálculo numérico y simbólico. Cuando el software está dirigido a un cliente, es decir se le vende a un cliente determinado, el software puede clasificarse de 2 maneras: [2] 

Productos genéricos. Son sistemas aislados producidos por una organización de desarrollo y que se venden al mercado abierto a cualquier cliente que le sea posible comprarlos.

Ing. Huilder Mera Montenegro

9


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

Ejemplos de este tipo de producto son el software para PCs tales como bases de datos, procesadores de texto, paquetes de dibujo y herramientas de gestión de proyectos.

Productos personalizados (o hechos a medida). Son sistemas requeridos por un cliente en particular. Un contratista de software desarrolla el software especialmente para ese cliente. Ejemplos de este tipo de software son los sistemas de control para instrumentos electrónicos, sistemas desarrollados para llevar a cabo procesos de negocios específicos y sistemas de control del tráfico aéreo. A este tipo de soluciones de software se le conoce comúnmente como software a medida, es decir cumple estrictamente cada uno de los requisitos que demanda el cliente.

1.3. Importancia Actualmente casi todos los países dependen de sistemas informáticos complejos basados en computadora. El desarrollo de software, es un mercado que se encuentra en crecimiento, actualmente tiene una participación importante en el PBI de nuestra economía. Cada vez existen más dispositivos que son controlados por software. El software está presente en negocios de todo tipo: En la industria manufacturera, en la educación, en el sector salud, en las finanzas y en el gobierno; Además que mucha gente utiliza software para su entretenimiento, educación y otras actividades. 1.4. Evolución Después de que los sistemas hayan sido desarrollados, inevitablemente han de sufrir cambios si tienen que seguir siendo útiles. Una vez que el software comienza a utilizarse, surgen nuevos requerimientos y los requerimientos existentes cambian. Los cambios en los negocios a menudo generan nuevos requerimientos para el software existente. Algunas partes del software tienen que modificarse para corregir errores encontrados en su funcionamiento, adaptarlo a una nueva plataforma y mejorar su rendimiento u otras características no funcionales. [2] El desarrollo del software, por lo tanto, no se detiene cuando un sistema es entregado, sino que continúa durante el tiempo de vida del sistema.

Ing. Huilder Mera Montenegro

10


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

La evolución del software es importante debido a que las organizaciones actualmente son completamente dependientes de sus sistemas software y han invertido millones de dólares en ellos. Los sistemas software son activos de negocio críticos y las organizaciones deben invertir en los cambios del sistema para mantener el valor de estos activos. Por lo tanto, en grandes compañías, la mayor parte del presupuesto de software se dedica a mantener los sistemas existentes, y no debería sorprender que algunas figuras como las de Erlikh (Erlikh, 2000) sugieran que el 90% de los costes del software sean costes de evolución. Sin embargo, hay bastante incertidumbre en este porcentaje, ya que la gente quiere decir diferentes cosas cuando se refiere a la evolución o a los costes de mantenimiento [4]

2. INGENIERÍA DE SOFTWARE 2.1. Definición La ingeniería del software es una disciplina de la ingeniería 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 que se utiliza. [2] La ingeniería del software es una disciplina o área de la Informática o Ciencias de la Computación, que ofrece métodos y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. [4] Es la aplicación práctica del conocimiento científico en el diseño y construcción de programas de computadora y la documentación asociada requerida para desarrollar, operar (funcionar) y mantenerlos. Se conoce también como desarrollo de software o producción de software. [1] 2.2. El producto software Es la máquina que conduce a la toma de decisiones comerciales. Sirve de base para la investigación científica moderna y de resolución de problemas de ingeniería. Es el factor clave que diferencia los productos y servicios modernos. Está inmerso en sistemas de todo tipo: de transportes, médicos, de telecomunicaciones, militares, procesos industriales, entretenimientos, etc. [4] Son todos los documentos asociados y la configuración de datos que se necesitan para hacer que los programas de computadora operen de manera correcta. Por lo general, un sistema de software consiste en diversos programas independientes, archivos de configuración que se utilizan para ejecutar estos programas. [2]

Ing. Huilder Mera Montenegro

11


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

2.3. Atributos de un buen software El software debe tener la funcionalidad y el rendimiento requeridos por el usuario, además de ser mantenible, confiable y fácil de usar. [2] Entre otros, estos son algunos atributos de un buen software:  Funcionalidad Se valora evaluando el conjunto de características y capacidades del programa, la generalidad de las funciones entregadas y la seguridad del sistema global.  Usabilidad Se valora considerando factores humanos, la estética, la consistencia y la documentación general.  Fiabilidad Se evalúa midiendo la frecuencia y gravedad de los fallos, la exactitud de las salidas (resultados/reportes), el tiempo de medio de fallos (TMDF), la capacidad de recuperación de un fallo y la capacidad de predicción del programa.  Rendimiento Se mide por la velocidad de procesamiento, el tiempo de respuesta, consumo de recursos, rendimiento efectivo total y eficacia.  Capacidad de soporte Combina la capacidad de ampliar el programa (extensibilidad), adaptabilidad y servicios (estos tres factores representan un término más común -mantenimiento-), así como capacidad de hacer pruebas, compatibilidad, capacidad de configuración, etc. 2.4. Ciclo de vida tradicional de un software El ciclo de vida de un software se divide en 5 etapas y que son fundamentales para su desarrollo. [2] En la figura 1 se muestra las 5 etapas fundamentales para el desarrollo de un software, así mismo se puede apreciar que estando en cualquier etapa se puede regresar a una etapa anterior con la finalidad de modificar o corregir algo.

Ing. Huilder Mera Montenegro

12


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

Figura 1: Ciclo de vida de un software

 Análisis y definición de requerimientos Los servicios, restricciones y metas del sistema se definen a partir de las consultas o entrevistas con los usuarios. Entonces, se definen en detalle y sirven como una especificación del sistema. En esta fase se analizan las necesidades de los usuarios finales del software para determinar qué objetivos debe cubrir. De esta fase surge un documento llamado ERS (Especificación de Requisitos de Software), que contiene la especificación completa de lo que debe hacer el sistema. Es importante señalar que en esta etapa se debe consensuar todo lo que se requiere del sistema y será aquello lo que seguirá en las siguientes etapas, no pudiéndose requerir resultados que no han sido especificados al final de la elaboración del software. Extraer los requisitos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere habilidad y experiencia para reconocer requisitos incompletos, ambiguos y/o contradictorios.  Diseño del sistema y del software El proceso de diseño del sistema divide los requerimientos en sistemas hardware o software. Establece una arquitectura completa del sistema. El diseño del software identifica y describe las abstracciones fundamentales del sistema software y sus relaciones.

Ing. Huilder Mera Montenegro

13


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

 Implementación y prueba de unidades Durante esta etapa, el diseño del software se lleva a cabo como un conjunto o unidades de programas. La prueba de unidades implica verificar que cada una cumpla su especificación.  Integración y prueba del sistema Los programas o las unidades individuales de programas se integran y prueban como un sistema completo para asegurar que se cumplan los requerimientos del software. Después de las pruebas, el sistema software se entrega al cliente.  Funcionamiento y mantenimiento Por lo general (aunque no necesariamente), ésta es la fase más larga del ciclo de vida. El sistema se instala y se pone en funcionamiento práctico. El mantenimiento implica corregir errores no descubiertos en las etapas anteriores del ciclo de vida, mejorar la implementación de las unidades del sistema y resaltar los servicios del sistema una vez que se descubren nuevos requerimientos. 2.5. Retos en la ingeniería de software La ingeniería del software afronta 5 retos fundamentales, los cuales se pueden apreciar en la figura 2. [2]

Figura 2: Retos en la ingeniería de software

 El reto de los sistemas legados Sistemas antiguos que tiene en funcionamiento un cliente (un negocio) y que deben ser mantenidos y mejorados. Suele suceder con sistemas informáticos que manejan procesos de vital importancia de un negocio y que almacenan información vital para la toma decisiones, es por este motivo que remplazarlo demanda de mucho esfuerzo y costo elevado.

Ing. Huilder Mera Montenegro

14


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

En otras ocasiones existe software que sirve de plataforma para el funcionamiento de otros sistemas. Ejemplo sistema de información gerencial.  El reto de la heterogeneidad Cada vez más, se requiere que los sistemas operen como sistemas distribuidos en redes que incluyen diferentes tipos de computadoras y con diferentes clases de sistemas de soporte. A menudo es necesario integrar software nuevo con sistemas heredados más viejos escritos en diferentes lenguajes de programación. El reto de la heterogeneidad es desarrollar técnicas para construir software confiable que sea lo suficientemente flexible para adecuarse a esta heterogeneidad.

 El reto de la entrega Muchas técnicas tradicionales de ingeniería del software consumen tiempo. El tiempo que éstas consumen es para producir un software de calidad. Sin embargo, los negocios de hoy en día deben tener una gran capacidad de respuesta y cambiar con mucha rapidez. Su software de soporte también debe cambiar con la misma rapidez. El reto de la entrega es reducir los tiempos de entrega para sistemas grandes y complejos sin comprometer la calidad del sistema.  El reto de la confianza Puesto que el software tiene relación con todos los aspectos de nuestra vida, es esencial que podamos confiar en él. Esto es especialmente importante en sistemas remotos de software a los que se accede a través de páginas web o de interfaces de servicios web, El reto de la confianza es desarrollar técnicas que demuestren que los usuarios pueden confiar en el software.  El reto de la Formalidad Existe una gran demanda de que exista formalidad en el proceso de desarrollo de software. 2.6. La ética en la ingeniería de software Como otras disciplinas de la ingeniería, la ingeniería del software se lleva a cabo dentro de un marco legal y social que limita la libertad de los ingenieros. Los ingenieros que desarrollan software deben aceptar que su trabajo comprende responsabilidades más amplias que simplemente la aplicación de habilidades técnicas. Deben comportarse de una forma ética y moral responsable si es que desean ser respetados como Ing. Huilder Mera Montenegro

15


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

profesionales. [2]. En la figura 3, se aprecia algunos aspectos éticos que deben ser reconocidos y respetados por los ingenieros que construyen software.

Figura 3: La ética en la ingeniería de software

 Confidencialidad Usted normalmente debe respetar la confidencialidad de sus empleadores o clientes independientemente de que se haya firmado un acuerdo formal de confidencialidad.  Competencia No debe falsificar su nivel de competencia, ni aceptar conscientemente trabajos que están fuera de su capacidad.  Derechos de propiedad intelectual Debe ser consciente de las leyes locales que gobiernan el uso de la propiedad intelectual, como las patentes y el copyright. Debe asegurarse de que la propiedad intelectual de los empleadores y clientes está protegida.  Uso inapropiado de las computadoras No debe emplear sus habilidades técnicas para utilizar de forma inapropiada las computadoras de otras personas. El uso inapropiado de las computadoras va desde los relativamente triviales (utilizar juegos en la máquina de un empleado, por ejemplo) hasta los extremadamente serios (difusión de virus).

Ing. Huilder Mera Montenegro

16


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

2.7. Modelos de proceso de desarrollo de un software Un proceso del software es un conjunto de actividades que conducen a la creación de un producto software. Un proceso para el desarrollo de software, también denominado ciclo de vida del 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 ellos describe un enfoque diferente para diferentes actividades que tienen lugar durante el proceso. [4] Aunque existen muchos procesos diferentes de software, algunas actividades fundamentales son comunes para todos ellos: - Especificación del software - Diseño e implementación del software - Validación del software - Evolución del software En la figura 4 se pueden apreciar los modelos de proceso de desarrollo de un software.

Figura 4: El proceso del software

2.7.1. Modelo en cascada Considera las actividades fundamentales del proceso de especificación, desarrollo, validación y evolución, y los representa como fases separadas del proceso, tales como la especificación de requerimientos, el diseño del software, la implementación, las pruebas y el mantenimiento. En la figura 5, se muestra un modelo de proceso de construcción de software, en este caso podemos apreciar el modelo en cascada.

Ing. Huilder Mera Montenegro

17


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

Figura 5: El modelo de proceso de desarrollo de un software, Modelo en cascada

2.7.2. El modelo de desarrollo evolutivo o incremental Los modelos evolutivos son iterativos. Se caracterizan por la forma en que permiten a los ingenieros del software desarrollar versiones cada vez más completas del software. El modelo incremental entrega el software en partes pequeñas, pero utilizables, llamadas (incrementos). En general, cado incremento se construye sobre aquél que ya ha sido entregado. En la figura 6, se muestra un modelo de proceso de construcción de software, en este caso podemos apreciar el modelo evolutivo e incremental.

Figura 6: El modelo de proceso de desarrollo de un software, Modelo Evolutivo o Incremental

Ing. Huilder Mera Montenegro

18


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

2.7.3. El modelo de construcción con prototipos Cuando el cliente tiene una necesidad legítima, pero está desorientado sobre los detalles, el primer poso es desarrollar un prototipo. Lo ideal sería que el prototipo sirviera como un mecanismo para identificar los requisitos del software. Si se construye un prototipo de trabajo, el desarrollador intenta hacer uso de los fragmentos del programa ya existentes o aplica herramientas (por ejemplo: generadores de informes, gestores de ventanas, etc.) que permiten generar rápidamente programas de trabajo. En la figura 7, se muestra un modelo de proceso de construcción de software, en este caso podemos apreciar el modelo de construcción de prototipos.

Figura 7: EL proceso del software, Modelo de construcción con prototipos

2.8. Mitos en el desarrollo de software En el desarrollo de software como en cualquier otra disciplina o ámbito de la vida tiene sus “mitos”, los cuales tienen influencia en el desarrollo de un proyecto de software. [2] Encontramos mitos desde el punto de vista: - Del gestor - Del cliente - Del desarrollador

Ing. Huilder Mera Montenegro

19


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

En la figura 8, se muestra los mitos que se presentan en el desarrollo de un proyecto de software, de izquierda a derecha se muestra a un gestor de proyectos de software, a los clientes y por ultimo a los desarrolladores encargados de construir el producto.

Figura 8: Mitos en el desarrollo del software

 Mitos del Gestor - Ya hay estándares y procedimientos. ¿No tiene ya bastante el equipo? - Tenemos las herramientas de desarrollo más avanzadas porque compramos los ordenadores más modernos. Si fallamos en la planificación, añadimos más gente y sanseacabó.  Mitos del Cliente - Una declaración inicial de objetivos es suficiente para empezar a escribir programas. Ya detallaremos más adelante. - Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente porque el software es flexible. - La labor del desarrollador consiste ÚNICAMENTE en escribir líneas de código fuente.  Mitos del Desarrollador - Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado. - No podemos comprobar la calidad hasta que se ejecute el programa. - Lo que se entrega al terminar el proyecto es el programa funcionando.

Ing. Huilder Mera Montenegro

20


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

2.9. El desarrollo de Software, Sin Ingeniería En el desarrollo de software como en cualquier otra disciplina o ámbito de la vida tiene sus “mitos”, los cuales tienen influencia en el desarrollo de un proyecto de software. [2] Como podemos apreciar en la figura 9, cuando existe el desarrollo de software sin hacer uso de las buenas prácticas que nos ofrece la ingeniería de software, es muy posible que en el proceso de implementación del producto se presenten muchos problemas, por citar algunos: Problemas de sobre costo, problemas de tiempo (retraso en las entregas del producto), problemas con el recurso humano que participa en el proyecto, etc. Estos problemas finalmente podría comprometer seriamente la calidad del producto.

Figura 9: El desarrollo de Software, Sin Ingeniería

-

Existencia de un vacío de información entre la especificación del producto software y su entrega El producto surge espontáneamente después de un largo periodo de oscuridad ¿Qué pasa si alguien se va a mitad de un proyecto? ¿y si se va todo un equipo?

En la figura 10, se puede apreciar un vació que existe entre la toma y especificación de requerimientos hasta el producto software, es decir después de tomados y especificados los requerimientos, no se realiza ninguna otra labor de ingeniería de software para elaborar un producto de calidad y que se ajuste a las necesidades del cliente.

Figura 10: El desarrollo de Software, Sin Ingeniería (2)

Ing. Huilder Mera Montenegro

21


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

El problema no es desarrollar el software, el verdadero problema radica en saber y comprender lo que el cliente realmente necesita que haga este software, para luego construir una solución a su medida y que satisfaga sus necesidades.

En la figura 11, se puede apreciar una guía básica que tiene lugar en el desarrollo de un software, si nos damos cuenta muchas veces el producto final que requiere el cliente (el software), no siempre cubre todas sus expectativas, es decir no está acorde con todos sus requerimientos o necesidades; no se ajusta a sus necesidades y es posible que no solucione del todo sus problemas. Por lo antes mencionado, hacer una buena gestión de requerimientos y especificación de los mismos es CLAVE, esto nos ayudará a elaborar un producto de software que vaya acorde con las necesidades del cliente.

El éxito o fracaso de un proyecto de desarrollo de software, depende en gran parte de una buena gestión de requisitos o requerimientos.

Figura 11: Guía básica del desarrollo del software

Ing. Huilder Mera Montenegro

22


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

CAPITULO II 3. LA INDUSTRIA DEL SOFTWARE 3.1. Definición La industria del software es la industria que involucra la investigación, desarrollo, distribución y comercialización de software. [4] En la economía moderna, la industria del software es la piedra angular de toda innovación tecnológica, ya que impacta en forma directa o indirecta sobre todas las actividades económicas. La demanda por los productos de software y los servicios de información tecnológica tiene una de las tasas de crecimiento mundiales más alta de la actualidad. [5] Al igual que el sector manufacturero, la industria del software se destaca por contribuir a diversificar la oferta exportadora de los países, generar oportunidades de empleos calificados y de nuevos negocios, y permitir la transferencia y difusión de nuevas tecnologías, entre otros aspectos. [6] La producción de software es una actividad económica que se caracteriza por generar un alto valor agregado y aportar a la economía elementos esenciales para su modernización. En la figura 12, podemos apreciar a un equipo de trabajo participando en el desarrollo de un proyecto de software; hay que destacar que en el desarrollo de este tipo de proyectos como en otros proyectos de ingeniería, se requiere de la participación conjunta de muchos profesionales para lograr construir un producto de calidad. Debemos saber que el equipo de trabajo de un proyecto de ingeniería de software, normalmente está conformado por profesionales de las áreas de ingeniería de sistemas y computación, distribuido entre analistas, diseñadores, desarrolladores, y capacitadores del producto; sin embargo dado que un software es construido para diferentes sectores económicos, es muy necesario la participación de profesionales de otras áreas como contadores, economistas, administradores de negocios, otras ingenierías y profesionales en general, los cuales serán de apoyo en temas que no son competencia de los ingenieros de sistemas y computación.

Ing. Huilder Mera Montenegro

23


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

Figura 12: La industria del software

3.2. Influencia de la globalización en la industria del software La globalización juega un papel muy importante en el desarrollo de la industria del software, puesto que países altamente desarrollados, e industrializados demandan en la actualidad de una enorme cantidad de productos de software lo cual representa una gran oportunidad para exportar software al mercado internacional. [7] 3.3. Cosas que se hacen posible con el uso del software El software hace posible el funcionamiento de mecanismos automatizados de alta complejidad, ejemplo de esto en distintos ámbitos son:  Manufactura Posibilita, entre otras cosas, el funcionamiento de plantas industriales con control automático de procesos complejos o los sistemas de control de calidad basados en la recopilación y procesamiento de datos en planta.  Agropecuario Posibilita, por ej., que una sembradora moderna posea una computadora con un administrador de siembra, que se encarga de suministrar la medida exacta de semillas por surco.  Servicios Posibilita que una empresa de logística conozca la ubicación exacta de una carga en un depósito o en una zona geográfica. Como así también una empresa de servicios de información pueda enviar noticias en tiempo real a un teléfono móvil, tablet, etc.  Salud Posibilita compartir información entre profesionales para consultas y seguimientos, a través de la estructuración de historias clínicas computarizadas, compuestas por diagnósticos, imágenes y notas médicas. Ing. Huilder Mera Montenegro

24


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

Un caso testigo e interesante de cómo la tecnología de información, basado en la utilización del software, impactó en la definición de los servicios ofrecidos es el ámbito bancario, donde es impensable hoy un banco que no posea un sitio de e-banking, acceso a cajeros automáticos o resumen de cuenta electrónico. Todo el soporte de estos servicios, el procesamiento de un requerimiento de un cliente, entre muchos otros servicios, está operado por un software que captura, valida, procesa, interpreta, almacena y genera información.

La figura 13, deja constancia que el software ha mejorado el estilo de vida de las personas, ahora es posible obtener dinero efectivo a través de un cajero automático; dispositivo electrónico operado por un software y es posible también realizar nuestros pagos sin necesidad de llevar el dinero en efectivo, hecho que nos da mayor seguridad y tranquilidad.

Figura 13: Cosas que se hacen posible con el uso del software

3.4. Aspectos generales de la industria del software Entre otros, estos son algunos aspectos generales de la industria del software. [5] En la figura 14, podemos ver los aspectos generales que tienen que ver con la industria del software.

Figura 14: Aspectos generales de la industria del software

Ing. Huilder Mera Montenegro

25


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

 El proceso de construcción de Software El ámbito de producción del software es muy variado y depende del entorno del desarrollo de un proyecto o negocio, esto es por ejemplo desde un programador que sólo desarrolla un producto de software específico, hasta las factorías o grupos de desarrollo de miles de personas trabajando en forma coordinada en la producción de software y / o sus componentes.  Certificaciones de calidad La adopción de estándares para la concreción de certificaciones de calidad es un punto muy importante en una industria cada vez más competitiva. Los mismos sirven como vehículos de diferenciación de la oferta, asegurando que el vendedor alinea a procesos estándares y consistentes. En la figura 15, podemos ver los estándares más difundidos y distinguidos en la industria del software como son: - ISO - CMMI

Figura 15: Certificaciones de calidad

 Derechos de propiedad y marcas El ámbito de protección por derechos de propiedad intelectual del Software, varía según las características del mismo y el tipo de legislación del país donde se pretenda reivindicar la protección. En principio, los sistemas legales aptos para cubrir estos desarrollos son los derechos de autor. Los derechos de propiedad intelectual son la esencia de la moderna sociedad de la información. La legislación y las reglas que definen, protegen y hacen valer los derechos intelectuales juegan un papel importante en la industria.  Recursos humanos El factor crítico y estratégico por excelencia para el desarrollo del software son los recursos humanos. Ing. Huilder Mera Montenegro

26


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

Particularmente, la formación de recursos humanos en las áreas de ingeniería y ciencias son un factor determinante en la capacidad de desarrollo de la Industria del Software y Tecnologías de Información. El factor recursos humanos, fue crítico en el desarrollo de la industria del Software en países como Irlanda, Israel e India, países que actualmente son líderes en la industria.  Infraestructura La infraestructura de apoyo brinda a la industria la capacidad de proyectar su desarrollo para la exportación. Un punto importante dentro de la infraestructura es el desarrollo de las telecomunicaciones, las cuales facilitan la inter-operatividad y la conformación de servicios asociados a la tecnología de información. Sin la presencia de las telecomunicaciones, no sería posible el desarrollo de la industria del software.

 Clasificación del software de acuerdo a la oferta La clasificación del software puede hacerse de acuerdo a la oferta, en dos planos de intersección. Horizontal o por forma de entrega Software enlatado Software hecho a medida Software de código abierto Software de código cerrado Vertical o por área de utilización o fin Software de aplicaciones empresariales Software de sistemas (eje. Sistemas Operativos) Software de oficina y uso personal Software de diseño para sistemas, arquitectura e ingeniería, gráficos y de animación y simulación Software de seguridad Software militar y científico

Ing. Huilder Mera Montenegro

27


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

3.5. Mercado del software La industria del software, cuyo valor de producción mundial ascendieron a unos 1,2 billones de dólares en 2011, es un componente de la industria mayor que es la Industria de la Tecnología de Información, compuesta además por el hardware, la cual es considerada la segunda industria en orden de importancia en Estados Unidos, después de la Electrónica y seguida en tercer orden por la Industria Automotriz. [5] 3.6. Beneficios del software para el desarrollo de la economía mundial El incremento del uso de teléfonos móviles y el mejoramiento de la conexión de banda ancha ofrecen a los países en desarrollo nuevas posibilidades de participar en el desarrollo y la producción de software. Según la conferencia de las naciones unidas sobre comercio y desarrollo (UNCTAD), el mejoramiento del acceso a las tecnologías de la información y las comunicaciones (TIC) y otros servicios conexos incluso en los países menos adelantados aumenta las posibilidades de hacer avances en materia de desarrollo aprovechando el impulso de las TIC en terrenos como la salud, la educación, la gobernanza y la creación y expansión de empresas. Sin embargo, para lograr que las mejoras en el acceso a las TIC generen los beneficios deseados, el software que se utiliza en los distintos dispositivos y servicios debe adaptarse a las necesidades y capacidades de los usuarios. [8] Se considera que la producción y el desarrollo de software pueden contribuir a la transformación estructural de las economías, es decir, pueden reducir gradualmente su dependencia de bienes de baja tecnología y ampliar la gama de productos de exportación. El desarrollo de software también puede impulsar el aprendizaje, la innovación y la creación de empleos, especialmente para los jóvenes cualificados. Se calcula que el sector de las aplicaciones para móviles generó en todo el mundo ingresos de entre 15.000 y 20.000 millones de dólares en 2011, y que pueden llegar a los 38.000 millones de dólares en 2014. 3.7. La industria del software en el Perú Según Rubén Caballero, Presidente de la Asociación Peruana de Productores de Software (APESOFT), comenta que hemos descubierto el potencial como productores de soluciones de software, tanto para el mercado nacional como para clientes del exterior. Existen Productores de software muy destacados que desarrollan productos de calidad. Este es un mercado en crecimiento y representa una oportunidad para todos.

Ing. Huilder Mera Montenegro

28


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

Refiere además que la producción de software en el año 2012, es aproximadamente de 300 millones de dólares. Videos sobre la industria del software en el Perú. http://www.youtube.com/watch?v=EXGXArnqL0w http://www.youtube.com/watch?v=QTJIuZ6JGn4 3.8. Resumen Al igual que el sector manufacturero, la industria del software se destaca por contribuir a diversificar la oferta exportadora de los países, generar oportunidades de empleos calificados y de nuevos negocios, y permitir la transferencia y difusión de nuevas tecnologías, entre otros aspectos. El crecimiento de la industria del software, se explica a partir del desarrollo manufacturero e industrial de las economías, a raíz de las cuales surgen cada vez nuevas necesidades de soluciones de calidad y costeables.[9] América Latina puede llegar a consolidarse como una localización global de software, como ha ocurrido en India, China y Europa oriental, gracias a las nuevas estrategias seguidas por las empresas transnacionales, orientadas a combinar operaciones globales en distintos husos horarios, niveles de costos y riesgos operacionales

Ing. Huilder Mera Montenegro

29


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

CAPITULO III 4. METODOLOGÍAS DE DESARROLLO DE SOFTWARE 4.1. Definición Una metodología de desarrollo de un producto software como un conjunto integrado de técnicas y métodos que permite abordar de forma homogénea y abierta cada una de las actividades del ciclo de vida de un proyecto de desarrollo. Además, de gestionar y administrar de manera sistemática, indica los procesos a seguir para idear, implementar y mantenerlo, desde que surge la necesidad hasta cumplir el objetivo por el cual fue creado. [10] Una metodología de desarrollo de software es una recopilación de técnicas que permiten abordar cada una de las fases de producción de software de manera eficiente y englobando todo el ciclo de vida del mismo. [11] Una definición estándar de metodología sería el conjunto de métodos que se utilizan en una determinada actividad con el fin de formalizarla y optimizarla. Determina los pasos a seguir y cómo realizarlos para finalizar una tarea. Si esto se aplica a la ingeniería del software, podemos destacar que una metodología: -

Optimiza el proceso y el producto software. Métodos que guían en la planificación y en el desarrollo del software. Define qué hacer, cómo y cuándo durante todo el desarrollo y mantenimiento de un proyecto

4.2. Elementos que forman parte de una metodología Una metodología define una estrategia global para enfrentarse con el proyecto. Entre los elementos que forman parte de una metodología se pueden destacar: Fases: tareas a realizar en cada fase. Productos: E/S de cada fase, documentos. Procedimientos y herramientas: apoyo a la realización de cada tarea. Criterios de evaluación: del proceso y del producto. Saber si se han logrado los objetivos.

Ing. Huilder Mera Montenegro

30


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

4.3. Fases comunes en una metodología Estudio de viabilidad. Implica hacer estimaciones aproximadas del coste y tiempo necesarios para construir un sistema nuevo y los beneficios que se derivarán de ello. Análisis funcional. Se debe conseguir productos altamente mantenibles, se deben tratar los problemas de gran tamaño mediante métodos de partición. Diseño físico. Asignación de porciones de la especificación a procesadores adecuados, y a tareas apropiadas dentro de cada procesador. Creación de una jerarquía de módulos de programas e interfaces entre ellos. Puesta en marcha o implantación Depuración y mantenimiento 4.4. Ventajas del uso de una metodología Son muchas las ventajas que puede aportar el uso de una metodología de desarrollo de software. Como se puede apreciar en la figura 16, aquí se muestran algunas de estas ventajas, clasificadas desde distintos puntos de vista:

Figura 16: Ventajas del uso de una metodología

4.4.1. Desde el punto de vista de gestión - Facilitar la tarea de planificación - Facilitar la tarea del control y seguimiento de un proyecto - Mejorar la relación coste/beneficio - Optimizar el uso de recursos disponibles - Facilitar la evaluación de resultados y cumplimiento de los objetivos - Facilitar la comunicación efectiva entre usuarios y desarrolladores Ing. Huilder Mera Montenegro

31


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

4.4.2. Desde el punto de vista de los ingenieros del software - Ayudar a la comprensión del problema - Optimizar el conjunto y cada una de las fases del proceso de desarrollo - Facilitar el mantenimiento del producto final - Permitir la reutilización de partes del producto 4.4.3. Desde el punto de vista del cliente o usuario - Garantía de un determinado nivel de calidad en el producto final - Confianza en los plazos de tiempo fijados en la definición del proyecto - Definir el ciclo de vida que más se adecue a las condiciones y características del desarrollo 4.5. Tipos de metodologías de desarrollo de software Desarrollar un buen software depende de un gran número de actividades y etapas, donde el impacto de elegir la metodología para un equipo en un determinado proyecto es trascendental para el éxito del producto. Según la filosofía de desarrollo se pueden clasificar las metodologías en dos grupos. Las metodologías tradicionales, que se basan en una fuerte planificación durante todo el desarrollo, y las metodologías ágiles, en las que el desarrollo de software es incremental, cooperativo, sencillo y adaptado. La figura 17, muestra los principales tipos de metodologías de desarrollo de software.

Figura 17: Tipos de metodologías de desarrollo de software

4.5.1. Metodologías tradicionales Las metodologías tradicionales son denominadas, como metodologías pesadas. Centran su atención en llevar una documentación exhaustiva de todo el proyecto y en cumplir con un plan de proyecto, definido todo esto, en la fase inicial del desarrollo del proyecto. Otra de las características importantes dentro de este enfoque, son los altos costos al implementar un cambio y la falta de flexibilidad en proyectos donde el entorno es volátil.

Ing. Huilder Mera Montenegro

32


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

Las metodologías tradicionales (formales) se focalizan en la documentación, planificación y procesos (plantillas, técnicas de administración, revisiones, etc.) 4.5.2. Metodologías ágiles En febrero de 2001, tras una reunión celebrada en Utah-EEUU, nace el término “ágil” aplicado al desarrollo de software. De la misma participaron un grupo de 17 expertos de esta industria, incluyendo algunos de los creadores o impulsadores de éstas metodologías. Su objetivo fue esbozar los valores y principios que deberían permitir a los equipos desarrollar software rápidamente y responder a los cambios que puedan surgir a lo largo del proyecto. Se pretendió ofrecer una alternativa a los procesos de desarrollos tradicionales, caracterizados por ser rígidos y dirigidos por la documentación generada en cada una de las actividades abordadas. Estas metodologías ponen de relevancia que la capacidad de respuesta a un cambio es más importante que el seguimiento estricto de un plan. Una Metodología ágil, es aquella que se basa en un conjunto de métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requerimientos y soluciones evolucionan mediante la colaboración de los desarrolladores del software y el cliente (Participación de todos los usuarios). 4.6. Que metodología utilizar para desarrollar un proyecto de software ¿Metodologías ágiles o metodologías tradicionales? En las metodologías tradicionales el principal problema es que nunca se logra planificar bien el esfuerzo requerido para seguir la metodología. Si logramos definir métricas que apoyen la estimación de las actividades de desarrollo, muchas prácticas de metodologías tradicionales podrían ser apropiadas. El no poder predecir siempre los resultados de cada proceso no significa que estemos frente a una disciplina de azar. Lo que significa es que estamos frente a la necesidad de adaptación de los procesos de desarrollo que son llevados por parte de los equipos que desarrollan software. Tener metodologías diferentes para aplicar de acuerdo con el proyecto que se desarrolle resulta una idea interesante. Estas metodologías pueden involucrar prácticas tanto de metodologías ágiles como de metodologías tradicionales. Ing. Huilder Mera Montenegro

33


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

De esta manera podríamos tener una metodología por cada proyecto, la problemática sería definir cada una de las prácticas, y en el momento preciso definir parámetros para saber cuál usar. Es importante tener en cuenta que el uso de una metodología ágil no es apropiado para cualquier proyecto. Sin embargo, una de las principales ventajas de los métodos ágiles es su peso inicialmente ligero y por eso las personas que no estén acostumbradas a seguir procesos encuentran estas metodologías bastante agradables. 4.7. Metodologías ágiles vs Metodologías tradicionales Metodologías ágiles

Metodologías tradicionales

Basadas en heurísticas provenientes de prácticas de producción de código

Basadas en normas provenientes de estándares seguidos por el entorno de desarrollo

Especialmente preparados para cambios durante el proyecto

Cierta resistencia a los cambios

Impuestas internamente (por el equipo)

Impuestas externamente

Proceso menos controlado, con pocos principios

Proceso mucho más controlado, con numerosas políticas/normas

No existe contrato tradicional o al menos es bastante flexible

Existe un contrato prefijado

El cliente es parte del equipo de desarrollo

El cliente interactúa con el equipo de desarrollo mediante reuniones

Grupos pequeños (<10 integrantes) y trabajando en el mismo sitio

Grupos grandes y posiblemente distribuidos

Pocos artefactos

Más artefactos

Pocos roles

Más roles

Menos énfasis en la arquitectura del software

La arquitectura del software es esencial y se expresa mediante modelos

Tabla 1: Metodologías ágiles vs Metodologías tradicionales

Ing. Huilder Mera Montenegro

34


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

4.8. Resumen Las metodologías tradicionales de desarrollo de software llevan asociadas un marcado énfasis en el control del proceso mediante una rigurosa definición de roles, actividades y artefactos, incluyendo modelado y documentación detallada, y han demostrado ser efectivas y necesarias en proyectos de gran tamaño. Las metodologías ágiles emergen como una posible respuesta ante éste escenario por estar especialmente orientadas a proyectos pequeños y constituyen una solución a medida para esos entornos, aportando una elevada simplificación, sin renunciar a las prácticas esenciales para asegurar la calidad del producto. La adecuada selección de la metodología para un determinado proyecto es trascendental para el éxito del mismo. [12]

BIBLIOGRAFÍA [1] IEEE Std, IEEE Software Engineering Standard: Glossary of Software Engineering Terminology. IEEE Computer Society Press, 1993 [2] I. Sommerville. Ingeniería del software (en español). 7ma. Edición. Madrid: Pearson Educacion S.A, 2005 [3] Real Academia Española. El Software, Vig. Sda. Edición. España, 2010 [4] R. Pressman. Ingeniería del Software (en español), Un enfoque práctico, Qta. Edición. Madrid: Mc Graw-Hill, 2002 [5] Subsecretaría de la Pequeña y Mediana Empresa y Desarrollo Regional Secretaría de Industria, Comercio y PyMEs, Ministerio de Economía y Producción, INDUSTRIA DEL SOFTWARE, Argentina, Enero 2005, [Online]. Disponible en: http://www.funcex.org.br/material/REDEMERCOSUL_BIBLIOGRAFIA/biblioteca/ESTUDOS_A RGENTINA/ARG_64.pdf [6] CEPAL, Comisión Económica para América Latina, Hoja informativa: Industria del software, Chile, Noviembre 2010, [Online]. Disponible en: http://www.eclac.org/prensa/noticias/comunicados/7/43307/hoja-informativa-software-es.pdf [7] D. Edery, Sociedad de Comercio Exterior del Perú, La industria del Software, Lima, Junio 2008, [Online]. Disponible en: http://www.comexperu.org.pe/archivos%5Crevista%5Cjunio08%5Cespecial130.pdf Ing. Huilder Mera Montenegro

35


INGENIERÍA DE SOFTWARE

Cuaderno de Trabajo

[8] UNCTAD, Conferencia de las naciones unidas sobre comercio y desarrollo, Ginebra, noviembre, 2012, [Online]. Disponible en: http://unctad.org/es/Paginas/PressRelease.aspx?OriginalVersionID=109 [9] O. Prudencio, La industria del software en Mexico, en el contexto internacional y latinoamericano, Pri. Edicion, Mexico, 2006. [10] Instituto Nacional de Tecnologías de la Comunicación (INTECO), SECRETARÍA DE ESTADO Y PARA LA SOCIEDAD DE LA INFORMACIÓN – GOBIERNO DE ESPAÑA, INGENIERÍA DEL SOFTWARE: METODOLOGÍAS Y CICLOS DE VIDA, España, Marzo, 2009, [Online] Disponible en: http://www.inteco.es/file/N85W1ZWFHifRgUc_oY8_Xg [11] Esteban Leyva Cortes, Sistemas y Aplicaciones Informáticas, Pri. Edición, Marzo 2006. [12] J. Canós, P. Letelier y M. Penadés, Metodologías Ágiles en el Desarrollo de Software. Universidad Politécnica de Valencia, Valencia, 2003, [Online] Disponible en: http://www.willydev.net/descargas/prev/TodoAgil.pdf

Ing. Huilder Mera Montenegro

36


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