modelado en el desarrollo de software

29
Técnicas de Modelamiento Sesión 1 El Modelado en el Desarrollo de Software Prof. César Luza Montero Facultad de Ingeniería de Sistemas e Informática Universidad Nacional Mayor de San Marcos Copyright © 2009, Cesar Luza, Lima-Perú Copyright © 2009, Cesar Luza, Lima-Perú

description

modelado en el desarrollo de software

Transcript of modelado en el desarrollo de software

  • Tcnicas de Modelamiento Sesin 1El Modelado en el Desarrollo de SoftwareProf. Csar Luza MonteroFacultad de Ingeniera de Sistemas e InformticaUniversidad Nacional Mayor de San MarcosCopyright 2009, Cesar Luza, Lima-Per

    El Modelado en el Desarrollo de Software

  • ContenidoEl software y sus aplicacionesEl proceso de desarrollo de softwareMtodos, tcnicas y herramientasLos modelos y su importanciaEl modelado de un sistema software

    El Modelado en el Desarrollo de Software

  • El software y sus aplicacionesDefinicin de software

    Lneas de Cdigo Software = Programas + Datos + DocumentacinEstructura de datos Manual de usuario, Documentacin de construccinDesarrollo + Mantenimiento

    El Modelado en el Desarrollo de Software

  • El software y sus aplicacionesHoy en da, el software ha superado al HW, y se dice: El SW marca la diferencia de un NegocioEl principal desafo es mejorar la calidad y reducir los costos (construccin / adaptacin, y mantenimiento ) de las soluciones con software.

    Definicin de softwareAquellos programas, procedimientos, reglas, y documentacin posible asociadas con la computacin, as como los datos persistentes a la operacin de un sistema de computo.

    El Modelado en el Desarrollo de Software

  • El software y sus aplicaciones

    Producto de softwareConjunto de elementos de software (programas, tablas, reportes, documentacin, etc.) que tienen un propsito especfico y completo desde el punto de vista del usuario, de tal manera que la sustraccin de cualquiera de los elementos del conjunto dara como resultado que el propsito no se cumpliera.

    El Modelado en el Desarrollo de Software

  • El software y sus aplicaciones

    Productos genricos (sw de mostrador)Desarrollados por una organizacin para ser vendidos al mercado.La mayor parte del gasto del software es en productos genricos, pero hay ms esfuerzo en el desarrollo de los sistemas hechos a medida.Productos hechos a medidaDesarrollados bajo pedido a una empresa desarrolladora de software.Tipos de Productos Software

    El Modelado en el Desarrollo de Software

  • El software y sus aplicaciones

    Software de Sistemas (de base)Software de Tiempo RealSoftware de Negocios o gestinSoftware de Ingeniera y cientficoSoftware Empotrado (Embebido)Software de PCsSoftware de Inteligencia artificialSoftware de Aplicaciones Web.

    Aplicaciones del Software

    El Modelado en el Desarrollo de Software

  • El proceso de desarrollo de software

    Desarrollo de softwareCrear e Implantar un sistema software, por ejemplo, software de tipo aplicacin que automatice el trabajo en una organizacin. Usuario

    El Modelado en el Desarrollo de Software

  • El proceso de desarrollo de software

    El Proceso Marco de trabajo de tareas a realizar para desarrollar SW de alta calidad.Ing. SistemasPlanificacinAnlisis de req.DiseoG. de CdigoPruebaDefinicin(QUE)Desarrollo(COMO)Soporte(CAMBIOS)Mant. CorrectivoMant. AdaptativoMant. PerfectivoMant. Preventivo o Reingeniera del SoftwareVisin Genrica

    El Modelado en el Desarrollo de SoftwareVeamos ahora cuales son las caractersticas genricas del proceso de desarrollo de software, es decir aquellas caractersticas que se encontrarn presentes en cualquiera sea el proceso de desarrollo particular que adoptemos. Ms adelante veremos en detalle distintos modelos especficos de procesos de desarrollo.La fase de Definicin se ocupa del qu. Es decir, durante la Definicin se intenta identificar qu informacin debe ser procesada, qu funcionalidad se desea, qu interfaces van a ser usadas, qu restricciones de diseo existen. Por lo tanto, se debern identificar los requerimientos tanto de hardware como de software. Bsicamente, durante la fase de Definicin tendrn lugar tres actividades: la Ingeniera del Sistema, la captura y anlisis de los requerimientos y la planificacin del proyecto de software.La fase de Desarrollo se ocupa del cmo. Es decir, ac se debe definir cmo sern las estructuras de datos, cmo ser la arquitectura del software, cmo se implementarn los detalles procedimentales, cmo sern las interfaces, cmo traducimos el diseo en cdigo, cmo llevamos a cabo la prueba. Bsicamente, tres tareas debern ocurrir en esta fase: el diseo del software, la generacin de cdigo y la prueba del software.La fase de Mantenimiento o Soporte se ocupa de los cambios en el software. En esta fase se podrn llevar a cabo cuatro tipos de mantenimientos diferentes dependiendo del tipo de cambio:Mantenimiento Correctivo: cambiar el software para corregir errores.Mantenimiento Adaptativo: cambiar el software para adaptarlo a su entorno, por ejemplo cambios en la CPU, en el sistema operativo, en las polticas de la empresa, en las caractersticas externas del producto, etc.).Mantenimiento Perfectivo: cambiar el software para mejorarlo y obtener nuevos beneficios.Mantenimiento Preventivo: debido al deterioro producido en el software por los sucesivos cambios, se suele llevar a cabo un procesos de Reingeniera para producir un nuevo software con la misma funcionalidad pero de mejor calidad.

  • El proceso de desarrollo de software: RUPRequerimientosAnlisis y DiseoImplementacinPruebaImplantacinGestin ProyectoModelado del NegocioControl de CambiosEntorno

    ConcepcinElaboracinConstruccinTransicin

    IteracionesIT #1 IT # 2IT # 3 IT # 4 IT # 5 IT # 6IT # 7 IT # 8

    El Modelado en el Desarrollo de Software

  • Mtodos, tcnicas y herramientasQue hace un Ingeniero? Construir artefactos dentro de unas limitaciones de coste, utilizando el conocimiento y las teoras de la ciencia sobre la cual se basa el artefacto.

    El Modelado en el Desarrollo de Software

  • Mtodos, tcnicas y herramientasLos mtodos indican los pasos que debemos seguir para construir un artefacto, ejemplo software. Abarcan una gran gama de tareas que incluyen el anlisis de los requisitos, el diseo, la construccin de programas, pruebas y mantenimiento.Las tcnicas indican como debemos construir el artefacto, es la forma de realizar las actividades del metodo. Ejemplo: tcnicas de modelado y otras tcnicas descriptivas.

    El Modelado en el Desarrollo de Software

  • Mtodos, tcnicas y herramientasHistricamente se han utilizado tcnicas como:El modeladoDivisin del ProductoDivisin del ProcesoEn principio se deberan utilizar estas tcnicas, tambin en informtica .

    El Modelado en el Desarrollo de Software

  • Mtodos, tcnicas y herramientasEl modelado Simplificacin del objeto en el mundo real, pero que es suficientemente realista como para dar una idea de lo que ocurrir en la realidad y usarse como base del desarrollo.

    El Modelado en el Desarrollo de Software

  • Mtodos, tcnicas y herramientasDivisin del Producto. Se fracciona el producto de modo que cada fragmento lo puede realizar un miembro del grupo de desarrollo.

    El Modelado en el Desarrollo de Software

  • Mtodos, tcnicas y herramientasDivisin del Proceso Implica dividir el desarrollo del artefacto por fases. Normalmente se habla de especificacin, diseo y fabricacin.

    Realizacin

    El Modelado en el Desarrollo de Software

  • Mtodos, tcnicas y herramientasLas herramientas proporcionan un enfoque automtico o semi-automtico para el proceso y para los mtodos. Cuando se integran herramientas para que la informacin creada por una herramienta pueda ser usada por otra, se establece un sistema de soporte para el desarrollo del software llamado Ingeniera del Software asistida por computadora (CASE).

    El Modelado en el Desarrollo de Software

  • Los modelos y su importancia

    Puede hacerlo una sola personaRequiere:Modelado mnimoProceso simpleHerramientas simplesConstruccin de una casa para fido

    El Modelado en el Desarrollo de SoftwareExtrada desde la presentacin Software Architecture and UML de Grady Booch (Rational Software).

  • Los modelos y su importancia

    Construida eficientemente y en un tiempo razonable por un equipoRequiere:ModeladoProceso bien definidoHerramientas ms sofisticadasConstruccin de una casa

    El Modelado en el Desarrollo de SoftwareExtrada desde la presentacin Software Architecture and UML de Grady Booch (Rational Software).

  • Los modelos y su importancia

    Construccin de un rascacielos

    El Modelado en el Desarrollo de SoftwareExtrada desde la presentacin Software Architecture and UML de Grady Booch (Rational Software).

    Obviamente el debe ser el contexto de desarrollo (envergadura del proyecto) el que determine la configuracin adecuada del proceso y los recursos necesarios. Existen propuestas radicales que promueven un proceso/modelado ms ligth, tales como: Extreme Programming (Kent Beck) y Agile Modeling (Scott Ambler). Sin embargo, en muchos proyectos es difcil eludir un proceso y modelado ms rigurosos, debido por ejemplo a relaciones contractuales, envergadura del proyecto en tiempo y participantes, etc. Una lectura interesante:Extreme Programming in the Quick-change Era 'Beware of the religion of the code-generating modeling tool.by Alexandra Weber MoralesAbout 30 years ago, Barry Boehm theorized that the cost of software change increased exponentially over time; that is, if an error caught in requirements gathering cost $1, an error caught during deployment would cost $1000. "What if," said Robert Martin, a former preacher who now uses his persuasive speaking skills to promote Smalltalk guru Kent Beck's Extreme Programming (XP) methodology, "you took a moment to suspend disbelief and considered that--due to today's technology--the cost of change is essentially flat. When costs don't change over time, up-front speculative work is a liability. Ambiguity and volatility are reasons to delay." In such a world, Martin told a packed room at the UML World conference in New York city on June 14, developers need a process that exploits a flat change/cost curve?and XP is that process. The five-year-old methodology values communication (but not on paper), simplicity, feedback and courage. It's designed for small to medium-sized teams of no more than 12 people who work in a common area, integrate and test their code constantly, pair program on single computers and use whiteboards hung on the periphery to hash out designs. Source code is the preferred archival medium, and cards containing "user stories"(requirements written by customers) and tasks are the "high-density storage mechanism," according to Martin, who runs a training firm called Object Mentor out of Green Oaks, IL. "Where does modeling fit in? asked an audience member, reminding Martin that his talk, at this point nearly over, had promised to describe the interaction between the UML and XP. "Paper and pencil or whiteboards are the best CASE tools I know of. In Kent's case, he uses CRC cards, not the UML," said Martin. "But whether it's Booch notation or UML, you do the highest-level map you can, but you don't do all your design up front. Remember, in XP it's not an archival resource, it's a communication device. The only archive I want is the code and a few poignant, incisive documents explaining why I made certain decisions." Does this mean that ever more sophisticated modeling tools have no place in XP? Not exactly, said Martin. "If a code-generating tool works for you, use it. After all, that's what a compiler does. But beware of the religion of modeling tools that spit out executable prototypes. Sometimes getting the code from the tool is more time-consuming than writing it yourself."

  • Los modelos y su importanciaModelar consiste en definir un mundo abstracto y teorico tal que las conclusiones que se puedan sacar de l coinciden con las manifestaciones aparentes del mundo real.Un modelo es la interpretacin explicita de lo que uno entiende de una situacin, o tan solo de las ideas de uno acerca de esa situacin.

    Problemas del Mundo RealModelo

    Abstraccin

    El Modelado en el Desarrollo de Software

  • Los modelos y su importanciaUtilidad de los modelosComprender la realidad, Un modelo es una simplificacin de la realidadComprender el sistemaUn modelo permite comprender mejor el sistema que estamos desarrollando: sus elementos y sus relacionesReducir la complejidadUn modelo permite reducir la complejidad de entender sistemas complejos en su totalidadComunicar con otrosUn modelo permite la comunicacin entre los desarrolladores y los clientes.

    El Modelado en el Desarrollo de Software

  • El modelado de un sistema softwareUn Modelo es un esquema simplificado que describe un sistema o realidad desde un determinado punto de vista que facilita su estudio y compresin

    Sistema Software(complejo)Los modelos de un sistema software se expresan visualmente mediante el lenguaje de modelado UML???Modelo(simplificado)

    El Modelado en el Desarrollo de SoftwareUn modelo captura una vista de un sistema del mundo real. Es una abstraccin de dicho sistema, considerando un cierto propsito. As, el modelo describe completamente aquellos aspectos del sistema que son relevantes al propsito del modelo, y a un apropiado nivel de detalle.

    Diagrama: una representacin grfica de una coleccin de elementos de modelado, a menudo dibujada como un grafo con vrtices conectados por arcos

    Un proceso de desarrollo de software debe ofrecer un conjunto de modelos que permitan expresar el producto desde cada una de las perspectivas de inters

    El cdigo fuente del sistema es el modelo ms detallado del sistema (y adems es ejecutable). Sin embargo, se requieren otros modelos ...

    Cada modelo es completo desde su punto de vista del sistema, sin embargo, existen relaciones de trazabilidad entre los diferentes modelos

  • El modelado de un sistema softwareArquitectura/Ingeniera de EstructurasVistas EdificioVista 3DAlzado/Planta PerfilEstructura del edificioInstalacin ElctricaInstalacin Aire Acc.

    ...

    Ingeniera SoftwareModelos UML del Sistema SoftwareModelo de Casos de usoModelo EstructuralModelo de ComportamientoModelo de ImplementacinModelo de Despliegue

    Herramientas Modelado (ej)Autocad

    Herramientas Modelado (ej)Rational Rose

    DiagramasDiagramas

    El Modelado en el Desarrollo de Software

  • El modelado de un sistema softwareModelo Visual: son modelos que presentan grficamente alguna vista del sistema.Se crean mediante:Lpiz y Papel Herramienta Software especifica

    (por ej: Rational Rose)CASE : Computer Aided Software Engineering

    El Modelado en el Desarrollo de Software

  • El modelado de un sistema softwareUn proceso de desarrollo de software debe ofrecer un conjunto de modelos que permitan expresar el producto desde cada una de las perspectivas de intersEl cdigo fuente del sistema es el modelo ms detallado del sistema (y adems es ejecutable). Sin embargo, se requieren otros modelos ...Cada modelo es completo desde su punto de vista del sistema, sin embargo, existen relaciones de trazabilidad entre los diferentes modelos

    El Modelado en el Desarrollo de Software

  • El modelado de un sistema softwareModelos de alto nivel en etapas tempranasDestinado a Stakeholders no tcnicosPara exploracin conceptual del problemaModelos de niveles mediosEspecificacin de Capacidades esenciales del sistemaHistricamente: ERs, DFDs, , Recientemente: Escenarios, Patrones de Diseo, etc.Modelos de nivel Detallados Modelos Formales

    El Modelado en el Desarrollo de Software

  • El modelado de un sistema softwareNota: Paradigma Orientado a Objeto Desarrollo de un sistema software mediante la construccin de unidades reusables siguiendo los principios de :AbstraccinEncapsulacinHerencia Polimorfismo

    El Modelado en el Desarrollo de Software

  • El modelado de un sistema softwareNota: Paradigma Basado en ComponentesDesarrollo de un sistema software mediante en el ensamblado de unidades reusables siguiendo los principios de:ComponentesInterfacesInfraestructura

    El Modelado en el Desarrollo de Software

    Veamos ahora cuales son las caractersticas genricas del proceso de desarrollo de software, es decir aquellas caractersticas que se encontrarn presentes en cualquiera sea el proceso de desarrollo particular que adoptemos. Ms adelante veremos en detalle distintos modelos especficos de procesos de desarrollo.La fase de Definicin se ocupa del qu. Es decir, durante la Definicin se intenta identificar qu informacin debe ser procesada, qu funcionalidad se desea, qu interfaces van a ser usadas, qu restricciones de diseo existen. Por lo tanto, se debern identificar los requerimientos tanto de hardware como de software. Bsicamente, durante la fase de Definicin tendrn lugar tres actividades: la Ingeniera del Sistema, la captura y anlisis de los requerimientos y la planificacin del proyecto de software.La fase de Desarrollo se ocupa del cmo. Es decir, ac se debe definir cmo sern las estructuras de datos, cmo ser la arquitectura del software, cmo se implementarn los detalles procedimentales, cmo sern las interfaces, cmo traducimos el diseo en cdigo, cmo llevamos a cabo la prueba. Bsicamente, tres tareas debern ocurrir en esta fase: el diseo del software, la generacin de cdigo y la prueba del software.La fase de Mantenimiento o Soporte se ocupa de los cambios en el software. En esta fase se podrn llevar a cabo cuatro tipos de mantenimientos diferentes dependiendo del tipo de cambio:Mantenimiento Correctivo: cambiar el software para corregir errores.Mantenimiento Adaptativo: cambiar el software para adaptarlo a su entorno, por ejemplo cambios en la CPU, en el sistema operativo, en las polticas de la empresa, en las caractersticas externas del producto, etc.).Mantenimiento Perfectivo: cambiar el software para mejorarlo y obtener nuevos beneficios.Mantenimiento Preventivo: debido al deterioro producido en el software por los sucesivos cambios, se suele llevar a cabo un procesos de Reingeniera para producir un nuevo software con la misma funcionalidad pero de mejor calidad.

    Extrada desde la presentacin Software Architecture and UML de Grady Booch (Rational Software).Extrada desde la presentacin Software Architecture and UML de Grady Booch (Rational Software).Extrada desde la presentacin Software Architecture and UML de Grady Booch (Rational Software).

    Obviamente el debe ser el contexto de desarrollo (envergadura del proyecto) el que determine la configuracin adecuada del proceso y los recursos necesarios. Existen propuestas radicales que promueven un proceso/modelado ms ligth, tales como: Extreme Programming (Kent Beck) y Agile Modeling (Scott Ambler). Sin embargo, en muchos proyectos es difcil eludir un proceso y modelado ms rigurosos, debido por ejemplo a relaciones contractuales, envergadura del proyecto en tiempo y participantes, etc. Una lectura interesante:Extreme Programming in the Quick-change Era 'Beware of the religion of the code-generating modeling tool.by Alexandra Weber MoralesAbout 30 years ago, Barry Boehm theorized that the cost of software change increased exponentially over time; that is, if an error caught in requirements gathering cost $1, an error caught during deployment would cost $1000. "What if," said Robert Martin, a former preacher who now uses his persuasive speaking skills to promote Smalltalk guru Kent Beck's Extreme Programming (XP) methodology, "you took a moment to suspend disbelief and considered that--due to today's technology--the cost of change is essentially flat. When costs don't change over time, up-front speculative work is a liability. Ambiguity and volatility are reasons to delay." In such a world, Martin told a packed room at the UML World conference in New York city on June 14, developers need a process that exploits a flat change/cost curve?and XP is that process. The five-year-old methodology values communication (but not on paper), simplicity, feedback and courage. It's designed for small to medium-sized teams of no more than 12 people who work in a common area, integrate and test their code constantly, pair program on single computers and use whiteboards hung on the periphery to hash out designs. Source code is the preferred archival medium, and cards containing "user stories"(requirements written by customers) and tasks are the "high-density storage mechanism," according to Martin, who runs a training firm called Object Mentor out of Green Oaks, IL. "Where does modeling fit in? asked an audience member, reminding Martin that his talk, at this point nearly over, had promised to describe the interaction between the UML and XP. "Paper and pencil or whiteboards are the best CASE tools I know of. In Kent's case, he uses CRC cards, not the UML," said Martin. "But whether it's Booch notation or UML, you do the highest-level map you can, but you don't do all your design up front. Remember, in XP it's not an archival resource, it's a communication device. The only archive I want is the code and a few poignant, incisive documents explaining why I made certain decisions." Does this mean that ever more sophisticated modeling tools have no place in XP? Not exactly, said Martin. "If a code-generating tool works for you, use it. After all, that's what a compiler does. But beware of the religion of modeling tools that spit out executable prototypes. Sometimes getting the code from the tool is more time-consuming than writing it yourself."

    Un modelo captura una vista de un sistema del mundo real. Es una abstraccin de dicho sistema, considerando un cierto propsito. As, el modelo describe completamente aquellos aspectos del sistema que son relevantes al propsito del modelo, y a un apropiado nivel de detalle.

    Diagrama: una representacin grfica de una coleccin de elementos de modelado, a menudo dibujada como un grafo con vrtices conectados por arcos

    Un proceso de desarrollo de software debe ofrecer un conjunto de modelos que permitan expresar el producto desde cada una de las perspectivas de inters

    El cdigo fuente del sistema es el modelo ms detallado del sistema (y adems es ejecutable). Sin embargo, se requieren otros modelos ...

    Cada modelo es completo desde su punto de vista del sistema, sin embargo, existen relaciones de trazabilidad entre los diferentes modelos