Diseño de Software

31
Software de Comunicaciones 2009-2010 © Los autores 1 Introducción a la ingeniería del software Autores: Simon Pickin Marisol García Valls Address: Departamento de Ingeniería Telemática Universidad Carlos III de Madrid Version: 1.0 Software de Comunicaciones 2009-2010 © Los autores 2 Índice 1. Visión General / Definición de términos 2. Los modelos de ciclo de vida 3. La captura, análisis y especificación de requisitos 4. El diseño del software 5. La calidad del software 6. La Prueba del software 7. Algunos novedades en el campo

description

Diseño de Software

Transcript of Diseño de Software

Software de Comunicaciones2009-2010 Los autores1Introduccin a laingeniera del softwareAutores: Simon PickinMarisol Garca VallsAddress:Departamento de Ingeniera TelemticaUniversidad Carlos III de MadridVersion: 1.0Software de Comunicaciones2009-2010 Los autores2ndice1. Visin General / Definicin de trminos2. Los modelos de ciclo de vida3. La captura, anlisis y especificacin de reuisitos!. "l dise#o del soft$are%. La calidad del soft$are&. La 'rue(a del soft$are7. Algunos novedades en el campoSoftware de Comunicaciones2009-2010 Los autores31. Visin general / definicin de trminosSoftware de Comunicaciones2009-2010 Los autores4Qu es la ingeniera del software? (1/4) El establecimiento y uso de principios de ingeniera robustos, orientados a obtenereconmicamente software que sea fiable y funcione eficientemente sobre mquinasreales.F.L. Bauer. Software Engineering.Information Processing 71., 1972 Software de Comunicaciones2009-2010 Los autores5Qu es la ingeniera del software? (2/4) La disciplina tecnolgica y de gestin queconcierne a la produccin y el mantenimientosistemtico de productos software desarrollados y modificados dentro de unosplazos estipulados y costes estimados.R. Fairley. Software Engineering Concepts. New York: McGraw-Hill, 1985. Software de Comunicaciones2009-2010 Los autores6Qu es la ingeniera del software? (3/4) Ingeniera del software. (1) La aplicacin de un enfoque sistemtico, disciplinado y cuantificable del desarrollo, la operacin y el mantenimiento del software; esto es, la aplicacin de la ingeniera al software. (2) El estudio de enfoques tales como (1).IEEE Std 610-1990 Software de Comunicaciones2009-2010 Los autores7Qu es la ingeniera del software? (4/4) Ingeniera es la aplicacin sistemtica de conocimiento cientfico en la creacin y construccinde soluciones, que satisfacen una buena relacinefectividad/precio, de problemas prcticos al serviciode la humanidad. La ingeniera del software es la forma de ingeniera que aplica los principios de lasciencias de la computacin y las matemticas en la obtencin de soluciones de los problemas del software que satisfacen una buena relacinefectividad/precio.SEI Report on Undergraduate Software Engineering Education, 1990.Software de Comunicaciones2009-2010 Los autores8Qu no es la ingeniera del software? (1/2) Las ciencias de la computacin atae a la teora y a los aspectos fundamentales la ingeniera del software atae a los aspectosprcticos del desarrollo y entrega de software til. an son insuficientes para actuar comoapuntalamiento de la ingeniera del software (al contrario, p.e., de la fsica y la ingeniera elctrica) Software Engineering,SommervilleSoftware de Comunicaciones2009-2010 Los autores9Qu no es la ingeniera del software? (2/2) La ingeniera de sistemas atae a todos los aspectos del desarrollo de sistemas basados en ordenadores, incluyendo el hardware, el software y la ingeniera de procesos la ingeniera del software es la parte de esteproceso que atae al desarrollo de la infrastructura software, el control, lasaplicaciones y las bases de datos del sistema. los ingenieros de sistema estn implicados en la especificacin del sistema, el diseoarquitectnico, la integracin y el despliegue.Software Engineering,SommervilleSoftware de Comunicaciones2009-2010 Los autores10Para qu la ingeniera del software? (1/4)? El trmino ingeniera del software se populariz al final de los aos 60 Respuesta a la llamada crisis del software las prestaciones del hardware aumentabanmucho ms rpido que las del software. el desarrollo de sistemas de software grandesresultaba muy insatisfactorio: entrega habitualmente retrasada (a veces por mucho) presupuesto habitualmente excedido (a vecesmasivamente) calidad del producto final habitualmente baja: productospoco fiables y difciles de mantenerSoftware de Comunicaciones2009-2010 Los autores11Para qu la ingeniera del software? (2/4)? Las tcnicas utilizadas para software uni-desarrollador no escalan proyectos grandes necesitan un equipo la calidad de comunicacin entre los miembroses un problema serio documentacin Deseo de beneficiarse de experiencia previa Necesidad de planificar para el mantenimiento y la evolucin Las decisiones de diseo importantes debendocumentarseSoftware de Comunicaciones2009-2010 Los autores12Para qu la ingeniera del software? (3/4)? La comunicacin con el cliente/usuario esprimordial entender los requisitos del cliente p.e. Xtreme programming (programacinextrema): el cliente tiene representante en el equipo de desarrolloSoftware de Comunicaciones2009-2010 Los autores13Para qu la ingeniera del software? (4/4)? Necesidad de estimar el dinero, tiempo y esfuerzo requeridos las estimaciones se basan principalmente en el modelado del proyecto actual y su comparacincon proyectos anteriores Queremos el trabajo? Cunto cobramos? Constructive Cost Model COCOMOConstructive Systems Engineering Cost Model COSYSMO The mythical man month, Brooks, 1975:aadir recursos humanos a un proyecto de software atrasado lo atrasa msSoftware de Comunicaciones2009-2010 Los autores14Qu es un proceso de desarrollo? (1/2) Proceso:Una serie de acciones u operaciones queconducen a un fin (Websters)conjunto de las fases sucesivas de un fenmenonatural o de una operacin artificial (RAE) Proceso de desarrollo de softwareEl conjunto de actividades, mtodos y prcticasutilizados en la produccin y evolucin de software.Software de Comunicaciones2009-2010 Los autores15Qu es un proceso de desarrollo? (2/2) Un proceso de desarrollo de software puede incluir un modelo de ciclo de vida divide el desarrollo en fases y prescribe las actividades quedeben realizarse en cada fase proporciona criterios para determinar cundo cada fase de desarrollo ha terminado define los deliverables / artefactos / productos de cada fase consideracin de herramientas y equipamiento consideracin de personal y de su organizacin restricciones sobre las actividades, los artefactos, lasherramientas, el personal etc. Para muchos autores:proceso de desarrollo de software = ciclo de vida de softwareSoftware de Comunicaciones2009-2010 Los autores16Qu es un ciclo de vida de software? El periodo de tiempo que comienza cuando se concibe un software y concluye cuando el producto ya no estdisponible para su uso. El ciclo de vida del software tpicamente incluye una fasede requisitos, una fase de diseo, una fase de pruebas, una fase de instalacin y aceptacin, una fase de operacin y mantenimiento, y, en ocasiones, una fase de retirada. Un modelo de ciclo de vida es una abstraccin particular que representa un ciclo de vida de software. Un modelode ciclo de vida se denomina con frecuencia un ciclo de vida de desarrollo software (SDLC, siglas inglesas). IEEE Standard Glossary of Soft. Eng. TerminologySoftware de Comunicaciones2009-2010 Los autores17El modelado de software (& hardware) Perspectiva escptica sobre modelos de software:burbujas y flechas, al contrario que los programas,nunca cascan Bertrand Meyer 1997 El uso de modelos es tan antiguo como la ingeniera antes de construir el ente real, los ingenieros construyenmodelos y aprenden de ellos Algunas caractersticas deseables de un modelo abstracto comprensible preciso predictivo no muy caro de construirSoftware de Comunicaciones2009-2010 Los autores18Modelado: el propsito de modelos Ayudarnos a entender un problema complejomediante anlisis y simulacin Permitir la investigacin y comparacin de soluciones alternativas Facilitar la comunicacin de ideas sobre un problema o sobre su solucin Permitir la deteccin de errores y omisiones duranteel diseo Para dirigir la implementacin particularidad del software:el modelo se convierte en la implementacinSoftware de Comunicaciones2009-2010 Los autores192. Modelos de ciclo de vidaSoftware de Comunicaciones2009-2010 Los autores20El proceso de desarrollo de softwareAnlisis de sistemaRequisitosde usuarioDesarrolloOperacin y MantenimientoSistema softwareSoftware de Comunicaciones2009-2010 Los autores21Modelo de ciclo de vida en cascada (1/2)Anlisis derequisitosAnlisis derequisitosDiseo DiseoImplementaciny prueba unitariaImplementaciny prueba unitariaIntegraciny prueba sistemaIntegraciny prueba sistemaOperaciny mantenimientoOperaciny mantenimientoSoftware de Comunicaciones2009-2010 Los autores22Modelo de ciclo de vida en cascada (2/2)Anlisis derequisitosAnlisis derequisitosDiseo DiseoImplementaciny prueba unitariaImplementaciny prueba unitariaIntegraciny prueba sistemaIntegraciny prueba sistemaOperaciny mantenimientoOperaciny mantenimientoEspecificacin del sistema softwareArquitectura y diseode componentesComponentesimplementadosSistemaintegradoSoftware de Comunicaciones2009-2010 Los autores23Modelo de ciclo de vida en V Captura derequisitosCaptura derequisitosAnlisis derequisitosAnlisis derequisitosDiseo dearquitecturaDiseo dearquitecturaDiseo decomponentesDiseo decomponentesCodificacin decomponentesCodificacin decomponentesPruebaunitariaPruebaunitariaIntegracinde subsistemasIntegracinde subsistemasIntegracin desistemaIntegracin desistemaPrueba deaceptacinPrueba deaceptacinOperacin yMantenim.Operacin yMantenim.Mundo realvalidacinSistemaverificacinSubsistemasverificacinComponentesverifcacinSoftware de Comunicaciones2009-2010 Los autores24Modelo de ciclo de vida incremental Se planifican el sistema entero y sus distintasiteraciones al principio del desarrollo El desarrollo y la entrega se dividen en incrementos con cada incremento se entrega parte de la funcionalidad Se priorizan los requisitos del usuario los que tienen la prioridad ms alta se incluyen en losprimeros incrementos Se congelan los requisitos de un incremento cuyodesarrollo ha empezado los requisitos para incrementos posteriores pueden seguirevolucionando Prototipado: cada iteracin puede tratarse como un prototipoSoftware de Comunicaciones2009-2010 Los autores25Modelo de ciclo de vida evolutivo No se planifican el sistema entero y sus distintasiteraciones el sistema final evoluciona a partir de una especificacinesbozo inicial Se empieza con los requisitos bien entendidos y se aaden elementos nuevos tal como los propone el cliente a partir de la iteracin anterior El objectivo de cada iteracin es entender losrequisitos del sistema Prototipado: cada iteracin puede tratarse como un prototipoSoftware de Comunicaciones2009-2010 Los autores26Modelo de ciclo de vida en espiral(versin generalizada)Determinacin de:objetivosrestriccionesalternativasAnlisis de riesgosResolucin de riesgosEvaluacin de alternativasEvaluacinPlanificacin de la siguiente faseRevisin procesoCosteprogresoDesarrollo producto y proceso del siguiente nivelV&V de producto y procesoSoftware de Comunicaciones2009-2010 Los autores27Modelo de ciclo de vida en espiral(versin original)Source: A Spiral Model of Software Development and EnhancementBarry Boehm, IEEE Computer, May 19Software de Comunicaciones2009-2010 Los autores283. Captura, Anlisis y Especificacinde RequisitosSoftware de Comunicaciones2009-2010 Los autores29Ingeniera de requisitos)so sistemtico de principios contrastados, tcnicas, len*ua+es y ,erramientas para o(tener el anlisisefectivo en coste y documentacin de las necesidadesen continua evolucin del usuario, y la especificacindel comportamiento e-terno del sistema reueridopara satisfacer dic,as necesidades.Donald Reifer !ver Pressman"La tarea de capturar, estructurar y representar con precisin los reuisitos del usuario de modo uepuedan ser correctemente encarnados en sistemasue verifican tales reuisitos.FOLDOC !http://foldoc.org/"Software de Comunicaciones2009-2010 Los autores30Contexto de la fase de anlisisDefinicin habitual:in#enier$a de re%ui&ito& ' captura, an(li&i& y e&pecificaci)n de re%ui&ito&Algunos autores:in#enier$a de re%ui&ito& ' an(li&i& de re%ui&ito& captura y e&pecificaci)n de re%ui&ito&Captura y desarrollode requisitosDiseosoftwareAnlisis y especificacinde requisitosQu Qu Qu Qu C CC C mo mo mo moSoftware de Comunicaciones2009-2010 Los autores31Anlisis estructuradoDiccionariode datosDiagramasentidad-relacinDiagramas de transicin de estadosDiagramas de flujo de estadosDescripcinde datosDescripcinfuncionalDescripcin de controlSoftware de Comunicaciones2009-2010 Los autores32Anlisis orientado a objetos Basado en objetos y sus operaciones y atributos, en vez de en flujos de datos Notacin ms comnmente usada: UML modelos estructurales (de clases, de componentes,) modelos comportamentales (de casos de uso, de estados, de colaboraciones, de interacciones,) Modelos estructurales a travs de anlisis de dominio Modelos comportamentales modelado de casos de uso es la tcnica ms popular uso de otros modelos comportamentales puede ser problemtico cmo refinar en modelo de diseo?Software de Comunicaciones2009-2010 Los autores334. Diseo del softwareSoftware de Comunicaciones2009-2010 Los autores34Notas histricas breves (1/2) Finales de los 60: diseo orientado a control (Structured Programming) modularidad construcciones de programa de entrada y salidanica (secuencia, seleccin, iteracin) prohibicin de la construccin go to (y la gestin de excepciones?) :Goto Statement Considered Harmful, Dijkstra, Comm. ACM, 1969Software de Comunicaciones2009-2010 Los autores35Notas histricas breves (2/2) 1970s: diseo orientado a estructuras de datos (extensin de Structured Programming) la estructura del cdigo del programa refleja la estructura de los datosp.e. Jackson Structured Programming 1980s: diseo orientado a objetos unifica el diseo orientado a estrcturas de datos y el diseo orientado a control (es cierto?) notacin ms comunamente usada: UMLSoftware de Comunicaciones2009-2010 Los autores36Qu es una arquitectura software? La organizacin fundamental de un sistema, encarnada en sus componentes, lasrelaciones entre ellos y con su entorno, y los principios que gobiernan su diseo y evolucin.ANSI/IEEE Std 1471-2000, Prcticasrecomendadas para la descripcinarquitectural de sistemas mayoritariamentesoftwareSoftware de Comunicaciones2009-2010 Los autores37Arquitecturas de softwareSistema SistemaSubsistema SubsistemaComponenteMduloDatos Datos Funciones FuncionesDiseodescendenteDiseoascendenteUnidad dedespliegueUnidad decompilacinSoftware de Comunicaciones2009-2010 Los autores38Fundamentos de la arquitectura de software Componentes y subsistemas los elementos individuales Conexiones cmo los componentes se comunican Topologa cmo los components y conexiones se organizan Restricciones sobre componentes, conexiones, topologa, evolucin,Software de Comunicaciones2009-2010 Los autores39Estilos de arquitectura software Restringen la manera en la que puedenconectarse los componentes Promocionan principios fundamentales separacin de intereses, generalidad, incrementalidad, acoplamiento dbil, cohesinfuerte,... Basado en experiencias exitosas elegida tambin en funcin del tipo de aplicacin Ej: pipe-and-filter, capas, bus de software, cliente-servidor, P2P, jerrquica, control centralizado, cliente-servidor 3-tier, etc.Software de Comunicaciones2009-2010 Los autores40Proceso de diseo tpicoModelo de diseo: arquitecturaDiseodetalladoDiseodetalladoDiseoarquitecturalDiseoarquitecturalEspecificacinde requisitossoftwareModelo de diseo: componentes Subsistemas Interfaces Interacciones Control Componentes Interfaces Mdulos Datos Procedimientos AlgoritmosSoftware de Comunicaciones2009-2010 Los autores41Algunos conceptos bsicos de diseo Abstraccin nfasis en detalles importantes, omitiendo caractersticasno relevantes en el contexto Refinamiento proceso de aadir ms detalles paulatinamente, pasandode modelos ms abstractos a modelos ms concretos. Modularidad descomposicin en componentes que se integrarn parasatisfacer los requisitos del problema Ocultacin de informacin / encapsulacin los componentes slo dejan disponible para su entorno la informacin que necesitarn otros componentes (lasinterfaces no ofrecen detalles de implementacin / diseo)Software de Comunicaciones2009-2010 Los autores425. La Calidad del SoftwareSoftware de Comunicaciones2009-2010 Los autores43Factores en la calidad del diseo (1/2) Criterios externos (perspectiva del usuario) la correccin la fiabilidad la usabilidad (facilidad de manejo) las prestaciones la robustez Criterios internos (perspectiva del desarrollador) la eficiencia la mantenibilidad la reusabilidad la portabilidad la interoperabilidadSoftware de Comunicaciones2009-2010 Los autores44Factores en la calidad del diseo (2/2) Desde la perspectiva del mantenimiento y reuso Independencia funcional de componentes cohesin intra-componente fuerte acomplamiento inter-componente dbil Legibilidad / comprensibilidad esquema de nombramiento documentacin actualizada y completa simplicidad / elegancia Adaptabilidad evolutividad y generalidad automatizacin del acceso a la documentacin automatizacin del control de versionesSoftware de Comunicaciones2009-2010 Los autores45Garanta de calidad /Control de calidad del software (1/2) Implica actividades realizadas a lo largo del ciclo de vida Definicin de verificacin (a partir de IEEE): asegurar que un sistema software, o modelo del mismo, cumpleuna especificacin (con frecuencia producida en una fase previadel desarrollo) coherencia interna estamos construyendo el sistema correctamente? Definicin de validacin (a partir de IEEE): asegurar que un sistema software, o modelo del mismo, cumple losrequisitos (los deseos del cliente) coherencia externa estamos construyendo el sistema correcto La prueba del software usualmente considerada validacin; tambin puede ser verificacin Mtricas de softwareSoftware de Comunicaciones2009-2010 Los autores46Garanta de calidad /Control de calidad del software (2/2)*uente: +,-ect.oriented Software En#ineerin#/Steven Schach/ Mc0raw.1ill/Software de Comunicaciones2009-2010 Los autores47Mtodos formales (1/2) Semntica formal: semntica basada en teora de conjuntos, lgebra, lgica, autmatas, teora de grafos, etc. Especificacin formal: descripcin abstracta con unasemntica formal. orientada a modelos orientada a propiedades Mtodo formal: mtodo utilizado en el desarrollo de software/hardware que implica el uso y manipulacin de especificaciones formales, p.e.: demostracin de propiedades de especificaciones formales derivacin de implementaciones, u otros artefactos software (p.e. casos de prueba), a partir de especificaciones formales demostracin de propiedades de una implementacin a partir de una interpretacin abstracta del cdigo Software de Comunicaciones2009-2010 Los autores48Mtodos formales (2/2) Especialmente importantes para sistemas crticos aviones, trenes, metro sistema de transmisin elctrica, centrales eltricos redes de telecomunicaciones ... Tambin para sistemas seguros Puede ser interesante para sistemas baratos peroproducidos en cantidades muy grandes Frecuentemente introducidos despus de la ocurrencia de un problema grave, p.e.: model-checking en Intel despus del descubrimiento del error de divisin de nmeros flotantes delPentiumSoftware de Comunicaciones2009-2010 Los autores49Mtodos formales y garanta de calidad (1/2) Aumento de la comprensin del sistema modelado Automatizacin de actividades comunes del desarrollo del software generacin de cdigo generacin de pruebas / sntesis de pruebas Anlisis/simulacin de modelos desde fases tempranas del desarrollo: temprana comprobacin de coherencia temprana deteccin de errores, omisiones, ambigedades, propiedades indeseadas,Software de Comunicaciones2009-2010 Los autores50Mtodos formales y garanta de calidad (2/2) Anlisis de las implementaciones deteccin de errores, omisiones, ambigedades, propiedades indeseables, Transformacin de modelos & comprobacin de coherencia entre modelos: en diferentes niveles de abstraccin de diferentes fases del desarrolloSoftware de Comunicaciones2009-2010 Los autores516. La Prueba de SoftwareSoftware de Comunicaciones2009-2010 Los autores52Visin general La prueba de software implica la ejecucin de la implementacin de una manera controlada y utilizando datos de entrada cuidadosamenteseleccionados para luego observar el resultado. La prueba de software es un aspecto de la garantade la calidad de software (Software Quality Assurance o SQA).Software de Comunicaciones2009-2010 Los autores53Definicin de un caso de prueba La especificacin de una interaccin entre la implementacin bajo prueba o IUT (en sus siglasinglesas) y el software de prueba, o usuario humano,quedesempea el papel del entorno de la IUT, en la que este ltimo estimula la IUT a travs de susinterfaces, observa su comportamiento y sus respuestas y, si incluye un oracle, asigna un veredicto al resultado de esta interaccin. Un caso de prueba se disea para ejercer unaejecucin particular o para verificar la conformidadcon un requisito especfico.Software de Comunicaciones2009-2010 Los autores54Prueba de software: cierto o falso (1/3) La mayora de los desarrolladores subestiman el esfuerzo quese tiene que dedicar a la prueba de software. sin duda; los desarrolladores tienen tendencia a pensar en trminos de lineas de cdigo al da Las pruebas debera hacerlas siempre un equipo distinto al del desarrollo.No siempre para todo tipo de prueba (p.e. pruebas de unidad), aunque siempre en el caso de algunos tipos de prueba No se puede ejecutar ninguna prueba hasta que est terminadoel cdigo de toda la aplicacin.p.e. la prueba de unidad Actualmente, la prueba es ms artesana que ciencia. frecuentemente, la experiencia del personal es crucial No se pueden escribir casos de prueba antes de que estdisponible el cdigo que se quiere probar.No siempre (p.e. JUnit)Software de Comunicaciones2009-2010 Los autores55Prueba de software: cierto o falso (2/3) El fin ltimo de la prueba de software es demostrar que el software que se est desarrollando est libre de errores.es imposible de conseguir con las pruebas Despus de reparar unos errores encontrados en la fase de pruebas, se debera probar de nuevo el software. es posible que no se hayan reparado los errores o que la reparacin de los errores haya introducido nuevos errores La fase de pruebas de un ciclo de vida de desarrollo software tpico termina cuando el software que se est desarrollando yano contiene errores.nunca se puede estar seguro de que no hay errores Si un mdulo de un producto de software bien probado se reutiliza en otro producto de la misma lnea de productos, no hace falta probarlo de nuevo.p.e. Ariane 5Software de Comunicaciones2009-2010 Los autores56Prueba de software: cierto o falso (3/3) Las actividades de la prueba de software se puedenautomatizar facilmente.es precisamente por esta razn que es ms artesana que ciencia Todos los errores encontrados en un producto de software en desarrollo deberan repararse antes de su publicacinse trata siempre de un compromiso entre severidad del error y coste de su reparacin La generacin automtica de pruebas tiene el potencial de producir ganancias enormes de productividad la automatizacin es difcil pero muy deseable Cuando se modifica un software, los casos de prueba que se utilizaron para probar la versin anterior deberan ejecutarse de nuevo sobre la versin modificada. eso es la prueba de regresin; por supuesto, tambin se puedennecesitar casos de prueba nuevosSoftware de Comunicaciones2009-2010 Los autores57Prueba de software, nociones bsicas (1/2) El objetivo de la prueba de software es encontrar errores y NO demostrar su ausencia una buena prueba encuentra un error no existe un nmero de pruebas que pueda garantizar que un programa no tenga errores Se debera probar que la aplicacin hace lo que tiene que hacer no hace lo que no tiene que hacer (en la medida de lo posible) Enfoques (a veces tambin se utiliza el trmino caja gris) la prueba de caja negra la prueba de caja blanca (la prueba estructural) Fases la prueba de unidades la prueba de integracin la prueba de sistemaSoftware de Comunicaciones2009-2010 Los autores58Prueba de software, nociones bsicas (2/2) Cobertura caja blanca: segmentos, ramas, condiciones, bucles, caja negra: requisitos Seleccin de datos de prueba (sobre todo para caja negra) particin en equivalentes (hiptesis de uniformidad) anlisis de valores lmites Otros tipos de pruebas pruebas de aceptacin pruebas de prestaciones pruebas de robustez pruebas de resistencia pruebas de interoperabilidad pruebas de regresin pruebas de mutacinSoftware de Comunicaciones2009-2010 Los autores597. Algunos novedades en el campoSoftware de Comunicaciones2009-2010 Los autores60Algunos novedades en el campo (1/3) Patrones de diseo solucin general, repetible, a un problema recurrente de diseo software inspiracin en la arquitectura, especialmente en lostrabajos de Christopher Alexander fundamentos tericos insuficientes? Armazones software (frameworks): diseo reutilizable para un sistema o subsistema software (patrn arquitectural?) Lneas de producto software proceso de desarrollo software para un conjunto de productos relacionados generalmente usan armazones softwareSoftware de Comunicaciones2009-2010 Los autores61Algunos novedades en el campo (2/3) Desarrollo ligero, en respuesta al hinchazn (bloat) del software y de la documentacin: Xtreme programming (programacin extrema), Scrum, etc. modelado gil Desarrollo dirigido por modelos ms que los programas, los modelos son los artefactosprimarios (generacin de cdigo) iniciativa MDA de la OMG (PIM - modelo independiente de plataforma y PSM modelo especfico a la plataforma) refactora de diseo (design refactoring) Arquitectura orientada a servicios (SOA) estilo de arquitectura cuyo fin es conseguir un acoplamientodbil entre agentes software interactuando y desempeandopapeles de productor o consumidorSoftware de Comunicaciones2009-2010 Los autores62Algunos novedades en el campo (3/3) Ingeniera del software basada en componentes sistema ensamblado (al menos parcialmente) a partir de componentes ya existentes. Ingeniera del software libre colaboracin con frecuencia implica un gran nmero de desarrolladores espacialmente separados gestin y estructura organizacional novedosas heterogeneidad en el uso de herramientas, enfoques etc. relacin con la ingeniera del software tradicionalactualmente bajo estudio Desarrollo de aplicaciones Web/ servicios Web tipo de aplicaciones actualmente muy populares se dan caractersticas de desarrollo particulares? o essolo marketing?