SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de...

19
METODOLOGÍAS DE DESARROLLO DE SOFTWARE SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE SOFTWARE Facilitador: Amoretti Bautista César G.

Transcript of SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de...

Page 1: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

METODOLOGÍAS DE DESARROLLO DE

SOFTWARESEMANA 01

INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE SOFTWARE

Facilitador: Amoretti Bautista César G.

Page 2: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

INTRODUCCIÓN• Una metodología de desarrollo de software se refiere a un

FRAMEWORK que es usado para estructurar, planear y controlar elproceso de desarrollo en sistemas de información.

• A lo largo del tiempo, una gran cantidad de métodos han sidodesarrollados diferenciándose por su fortaleza y debilidad.

• El framework para metodología de desarrollo de software consisteen:

• Una filosofía de desarrollo de programas de computación con elenfoque del proceso de desarrollo de software

• Herramientas, modelos y métodos para asistir al proceso dedesarrollo de software

• Estos frameworks son a menudo vinculados a algún tipo deorganización, que además desarrolla, apoya el uso y promueve lametodología. La metodología es a menudo documentada en algúntipo de documentación formal.

Page 3: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

FRAMEWORK• La palabra inglesa "framework" (marco de trabajo) define, en

términos generales, un conjunto estandarizado de conceptos,prácticas y criterios para enfocar un tipo de problemática particularque sirve como referencia, para enfrentar y resolver nuevosproblemas de índole similar.

• En el desarrollo de software, un framework o infraestructura digital,es una estructura conceptual y tecnológica de soporte definido,normalmente con artefactos o módulos de software concretos, quepuede servir de base para la organización y desarrollo de software.Típicamente, puede incluir soporte de programas, bibliotecas, y unlenguaje interpretado, entre otras herramientas, para así ayudar adesarrollar y unir los diferentes componentes de un proyecto.

• Representa una arquitectura de software que modela las relacionesgenerales de las entidades del dominio, y provee una estructura yuna especial metodología de trabajo, la cual extiende o utiliza lasaplicaciones del dominio.

Page 4: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

EVOLUCIÓN DEL SOFTWARE

Page 5: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

IMPORTANCIA DEL SOFTWARE• El software es ahora la clave del éxito de muchos de los sistemas basados

en computadora. El software marca la diferencia. Lo que diferencia unacompañía de otra es la suficiencia, exactitud y oportunidad de lainformación dada por el software.

• El desarrollo de software se ha convertido en una industria concrecimiento vertical en los últimos años, hoy por hoy uno de los hombresmas ricos del mundo es el dueño de una casa de software, Microsoft.

• Hace un par de décadas se sostenía la teoría de que los países que poseíanlos mejores recursos naturales estaban destinados a ser los mas ricos ypoderosos del mundo, en México por ejemplo, se manejo la idea de que elpetróleo era la puerta de entrada grande al mundo desarrollado.Indudablemente los recursos naturales tienen un papel importante en laeconomía de los países, sin embargo poco a poco se fue acuñando unanueva ideología que se sintetiza en lo siguiente:– “El que posee la información y el conocimiento y hace mejor uso de él, es el

que tiene el poder”.

Page 6: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

PROBLEMAS DEL SOFTWARE• La planificación y estimación de costos frecuentemente son imprecisas. • Falta de “productividad” en la comunidad de software”• La calidad del software es a veces ni aceptable.• Estos problemas al final crean insatisfacción y falta de confianza de los

clientes. Los problemas anteriores son solo manifestación de otrasdificultades:– No tenemos tiempo de recoger datos sobre el proceso de desarrollo del

software.– Los proyectos de desarrollo de software se llevan a cabo con solo una vaga

indicación de los requisitos del cliente.– La calidad del software es normalmente cuestionable.– El mantenimiento de software es muy costoso y no se le ha considerado un

aspecto importante.– Los problemas anteriores son corregibles, la clave es: Dar un enfoque de

ingeniería al desarrollo de software.

Page 7: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

CARACTERÍSTICAS DEL SOFTWARE

• El software es un elemento del sistema que es lógico. Por tanto, el software tiene características considerablemente distintas al hardware: – El software se desarrolla, no se fabrica en un

sentido clásico.– El software no se estropea.– La mayoría de software se construye a medida, en

vez de ensamblar componentes existentes.

Page 8: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

CONCEPTOS DE CALIDAD• Algunas características de calidad fundamentales en todo producto de

programación son :• Utilidad. Que satisfaga las necesidades del usuario, ya que con frecuencia

no desempeñan las funciones esperadas debido principalmente a unapobre comunicación con el cliente.

• Confiabilidad. Capacidad de un programa para desempeñar una funciónrequerida bajo ciertas condiciones durante un tiempo especifico. El gradode confiabilidad deseado en un producto depende del costo de las fallas.

• Claridad. Los productos de software deben ser escritos con claridad y serfáciles de entender tanto internamente como externamente, ya que laspruebas y actividades de mantenimiento consumen gran cantidad delpresupuesto del proyecto.

• Económico. El producto debe ser costeable en su desarrollo,mantenimiento y uso. Un software debe operar normalmente usandomenos tiempo o recursos humanos o materiales de los que se requeríanantes de tenerlo.

Page 9: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

PARADIGMA DE INGENIERÍA DE SISTEMA

• La ingeniería de software surge de la ingeniería de sistemas y de hardware. Abarcaun conjunto de tres elementos que facilitan el control sobre el proceso dedesarrollo de software y suministran las bases para construir software de calidadde una forma productiva:

• MÉTODOS que indican cómo construir el software técnicamente e incluyen unamplio espectro de métodos para la planificación, la estimación, el análisis, eldiseño, codificación, prueba y mantenimiento.

• HERRAMIENTAS automáticas y semiautomáticas que apoyan a la aplicación de losmétodos. Cuando se integran las herramientas de forma que la información creadapor una herramienta puede ser usada por otra, se establece un sistema para elsoporte del desarrollo de software, llamado Ingeniería de Software Asistida porComputadora ( CASE ).

• PROCEDIMIENTOS que definen la secuencia en la que se aplican los métodos, lasentregas, los controles de calidad y guías para evaluación del progreso.

• La Ingeniería de Software está compuesta por una serie de pasos que abarcan losmétodos, herramientas y procedimientos mencionados, a los que se denominanParadigmas de la Ingeniería de Software.

Page 10: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

CICLO DE VIDA CLÁSICO - CASCADA

• Este paradigma exige un enfoque secuencial del desarrollo de software. Abarca las siguientes actividades:– Ingeniería y Análisis del Sistema.- El Software es siempre parte de un sistema

mayor, por tanto se comienza estableciendo las entidades, roles, funciones,etc. de los que intervienen en el sistema, se identifican los requisitos delsistema y luego se asigna un sub conjunto de estos requisitos al software.

– Análisis de Requisitos del Software.- Proceso de recopilación de los requisitosespecíficamente del software. El analista debe comprender el ámbito de lainformación, la función, el rendimiento y las interfaces del software.

– Diseño.- Traduce los requisitos en una representación de software que puedaser codificada.

– Codificación.- Traducción del diseño en código fuente escrito en un lenguajede programación.

– Prueba.- Verificación de que las funciones del software producen losresultados que realmente se requieren.

– Mantenimiento.- El mantenimiento aplica cada uno de los pasos precedentespara implementar los cambios que con el tiempo indudablemente sufrirá elsoftware.

Page 11: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.
Page 12: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

• Este paradigma es el más antiguo y másampliamente usado, sin embargo se hacuestionado su aplicabilidad por lo siguiente:– Los proyectos reales rara vez siguen el flujo secuencial

propuesto.– Normalmente es difícil para el cliente establecer

claramente todos los requisitos y el paradigma loexige.

– El cliente debe ser paciente ya que solo hasta lasetapas finales de desarrollo estará disponible unaversión operativa del software.

Page 13: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

CONSTRUCCIÓN DE PROTOTIPOS • Normalmente el cliente define los objetivos generales del software pero

no identifica detalladamente todos los requisitos. En otros casos eldesarrollador puede no estar seguro de entender al cliente, de cómopodrá ser el software que requiere, de la eficiencia que espera, etc. Enestas situaciones puede ser mejor el método de construcción de unprototipo.

• El prototipo puede ser elaborado en papel o programado para queimplemente algunas funciones requeridas de manera rudimentaria, sintodos los detalles y acabados del programa final.

• Se empieza con la recolección de requisitos, se produce un diseño“rápido” que se enfoca sobre los aspectos visibles al usuario ( pantallas,informes, etc ) Se construye el prototipo y se evalúa por parte del cliente ysus observaciones se usan para refinar los requisitos del software adesarrollar. Se produce un proceso iterativo en el que el prototipo se“afina” para que satisfaga las necesidades del cliente y al mismo tiempofacilita al desarrollador una mejor comprensión de lo que hay que hacer.

Page 14: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.
Page 15: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

EL MODELO EN ESPIRAL • Combina las características de los dos paradigmas

anteriores y añade al mismo tiempo nuevos elementos.• El modelo define cuatro actividades representadas en

cuatro cuadrantes.– Planificación.- determinación de objetivos, alternativas y

restricciones.– Análisis de riesgo.- identificación y resolución de riesgos que

pueden hacer que el proyecto fracase.– Ingeniería.- desarrollo del producto de “siguiente nivel”– Evaluación del cliente.- valoración de los resultados de

ingeniería.• En el modelo, con cada iteración de la espiral se construye

una versión sucesiva del software, cada vez más completas.

Page 16: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

EL MODELO ESPIRAL• Se empieza con la recolección de requisitos, luego se

identifican y analizan los riesgos; si este análisis indicaincertidumbre en los requisitos se puede crear unprototipo en el cuadrante de ingeniería. El clienteevalúa el trabajo de ingeniería y sugieremodificaciones. En base esos comentarios se producela siguiente fase de planificación y análisis de riesgo. Silos riesgos son demasiado grandes se puede dar porterminado el proyecto. Cada vuelta de la espiralrequiere de trabajo de ingeniería que puede sermediante el enfoque de ciclo de vida clásico o con lacreación de prototipos.

Page 17: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.
Page 18: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

TÉCNICAS DE CUARTA GENERACIÓN• Las técnicas de cuarta generación son un conjunto muy diverso de métodos y herramientas que

tienen por objeto el de facilitar el desarrollo del software, facilitan al que desarrolla el software lapropiedad de especificar algunas características del mismo a alto nivel, mas tarde, la herramientagenera automáticamente el código fuente a partir de esta especificación.

• Los tipos más comunes de generadores de código cubren uno o varios de los siguientes aspectos:• Acceso a base de datos: utilizando lenguajes de consulta de alto nivel. Generadores de códigos: a

partir de una especificación de los requisitos se genera automáticamente toda la aplicación• Generación de pantallas: permitiendo diseñar la pantalla dibujándola directamente, incluyendo

además el control del cursor y la gestión de los errores de los datos de entrada.• 3.-Gestión de entornos gráficos.• 4.-Generación de informes: Como otros paradigmas, T4G comienza con el paso de recolección de

requerimientos. En el mejor de los casos el cliente debería describir los requerimientos y éstostraducirse directamente a un prototipo operacional pero en general esto no es así. El cliente puedeno estar seguro de lo que necesita, puede ser ambiguo en la especificación de hechos que sonconocidos y puede ser incapaz o no desear especificar la información en la forma que unaherramienta T4G puede construirla, además las herramientas actuales T4G no son losuficientemente sofisticadas para acomodar realmente lenguaje natural y no lo serán por algúntiempo.

Page 19: SEMANA 01 INTRODUCCIÓN - PARADIGMAS DE DESARROLLO DE … · – Los proyectos de desarrollo de software se llevan a cabo con solo una vaga indicación de los requisitos del cliente.

LENGUAJE DE PROGRAMACIÓN DE CUARTA GENERACIÓN

• Los lenguajes de cuarta generación son ciertas herramientas prefabricadas, que aparentementedan lugar a un lenguaje de programación de alto nivel que se parece más al idioma inglés que a unlenguaje de tercera generación, porque se aleja más del concepto de "procedimiento". Puedenacceder a bases de datos.

• Algunos restringen el nombre de "lenguajes de cuarta generación" para los lenguajes orientados aobjetos.

– Ejemplos: NATURAL, PL/SQL, ADF Oracle• VENTAJAS:

– Permiten elaborar programas en menor tiempo, lo que conlleva a un aumento de la productividad.– El personal que elabora software sufre menos agotamiento, ya que generalmente requiere escribir menos.– El nivel de concentración que se requiere es menor, ya que algunas instrucciones, que le son dadas a las

herramientas, a su vez, engloban secuencias de instrucciones a otro nivel dentro de la herramienta.– Cuando hay que dar mantenimiento a los programas previamente elaborados, es menos complicado por

requerir menor nivel de concentración.• DESVENTAJAS:

– Las herramientas prefabricadas generalmente son menos flexibles que los lenguaje de alto nivel.– Se crea dependencia de uno o varios proveedores externos, lo que se traduce en pérdida de autonomía. A

menudo las herramientas prefabricadas contienen librerías de otros proveedores, que conlleva a instalaropciones adicionales que son consideradas opcionales. Los programas que se elaboran generalmente seejecutan sólo con la herramienta que lo creó (a menos que existan acuerdos con otros proveedores).

– A menudo no cumplen con estándares internacionales ISO ANSI. Por este motivo invertir tiempo y dinero esun riesgo a futuro, porque no se sabe a ciencia cierta cuanto tiempo permanecerá la herramienta y sufabricante en el mercado.