Modelos+computacionales+y+paradigmas+de+modelado.


 * Grupo N� 4**
 * **C�dula Identidad** || **Nombre y Apellido** ||
 * ======**//17.887.959//**====== || ======**//Mago Dariana//**====== ||
 * ======**//20.100.634//**====== || ======**//Mejia Sonia//**====== ||
 * ======**//19.430.335//**====== || ======**//Moreno Patricia//**====== ||
 * ======**//19.191.365//**====== || ======**//Romero Ana//**====== ||

**// Modelo computacional: //** // Es un [|modelo matemático] en las [|ciencias de la computación] que requiere extensos [|recursos computacionales] para estudiar el comportamiento de un [|sistema complejo] por medio de la [|simulación por computadora]. El sistema bajo estudio es a menudo un sistema complejo [|no lineal] para el cual las [|soluciones analíticas] simples e intuitivas no están fácilmente disponibles. En lugar de derivar una solución analítica matemática para el problema, la experimentación es hecha con el modelo cambiando los parámetros del sistema en la computadora, y se estudian las diferencias en el resultado de los experimentos. Las teorías de la operación del modelo se pueden derivar/deducir de estos experimentos de computacionales. // // Ejemplos de modelos de computacionales comunes son modelos de el [|pronóstico del tiempo], modelos del [|Earth Simulator] , modelos de [|simulador de vuelo] , modelos de [|plegamiento molecular de proteínas] , y modelos de [|red neural]. // // Un **simulador de vuelo** es un [|sistema] que intenta replicar, o [|simular], la experiencia de [|volar] una [|aeronave] de la forma más precisa y realista posible. Los diferentes tipos de simuladores de vuelo van desde [|videojuegos] hasta [|réplicas de cabinas] en tamaño real montadas en accionadores [|hidráulicos] (o [|electromecánicos] ), controlados por sistemas modernos [|computarizados]. // // Los simuladores de vuelo son muy utilizados para el entrenamiento de [|pilotos] en la industria de la [|aviación], el entrenamiento de pilotos [|militares] , simulación de desastres o fallas en vuelo y desarrollo de aeronaves. //

//Una red neuronal// //o red neural////, puede referirse a:// // [|Red neuronal artificial] ////, modelos matemáticos, computacionales, reales, ideales de una red neuronal empleados en estadística, psicología cognitiva, e inteligencia artificial.// // [|Red neuronal biológica] ////, cúmulo de neuronas físicamente interconectadas cuya actividad ayuda a definir un circuito reconocible en el sistema nervioso.// // El **plegamiento de proteínas** //// es el proceso por el que una [|proteína] alcanza su [|estructura tridimensional]. La función biológica de una proteína depende de su correcto plegamiento. Si una proteína no se pliega correctamente será no funcional y, por lo tanto, no será capaz de cumplir su función biológica. // // El proceso inverso es conocido como [|desnaturalización] de proteínas. Una proteína desnaturalizada no es más que una cadena de aminoácidos sin una estructura tridimensional definida ni estable. A menudo, las proteínas desnaturalizadas pierden su solubilidad y precipitan. En algunos casos los procesos de plegamiento y desnaturalización son reversibles, aunque en otros no. //

// Dirk Helbing profesor de Sociología, en la especialidad Modelado y Simulación, en el Instituto Federal Suizo de Tecnología en Zurich. Su particular idea es crear una especie de proyecto Manhattan para estudiar, comprender y abordar los temas tecnológicos, sociales, económicos y ambientales que involucran al planeta entero. Su plan consiste en reunir, de manera constante y en tiempo real, datos generales pero con un alto índice de exactitud y utilizarlos para simular el comportamiento del planeta y luego emplearlos para predecir y prevenir estragos que puedan afectar a cualquier sector de la sociedad. La predicción del comportamiento de la humanidad gracias a las estadísticas es un hecho que comienza a tomar forma. El futuro está llegando y hay personas que desean verlo antes que suceda. //

**// Paradigmas de modelados: //** //Los modelos paradigmáticos son modelos metafísicos y epistemológicos, que proporcionan el "contexto" en que se forman los diferentes modelos teóricos y teorías de un nivel inferior, presentando las directrices generales de agrupamiento de las diferentes teorías.// //Alternativamente, el Diccionario Oxford define a paradigma como "Un patrón o modelo, un ejemplo". Así, un componente adicional de la definición de Kuhn es:// //De esta forma, dentro de la ciencia normal, un paradigma es el conjunto de experimentos modélicos capaces de ser copiados o emulados; siendo la base para crear un [|consenso científico]. El paradigma prevalente presente en el consenso imperante representa, a menudo, una forma más específica de ver la realidad o las limitaciones de propuestas para la investigación futura; más que un [|método científico] mucho más genérico. Esto nos pudiera conducir a un [|paradigma positivista] .// //Un ejemplo de paradigma comúnmente aceptado sería el modelo estándar de la física. Los métodos científicos permitirían a los científicos ortodoxos investigar muchos fenómenos que pueden resultar contradictorios o contrastantes con el modelo estándar. Sin embargo es mucho más difícil obtener consenso para los mismos, en proporción a la divergencia de los principios aceptados del modelo estándar que tales experimentos examinarían. Por ejemplo, un experimento para investigar la masa del neutrino o la descomposición de neutrones recibiría más fondos que un experimento que buscara violaciones a la conservación de momentos, o pretendiera estudiar la ingeniería de los viajes en el tiempo.// //Algunos conceptos más despectivos ( [|pensamiento de grupo][|3] o su casi equivalente Mindset) tienen significados muy similares que aplican a pequeña y gran escala del pensamiento disciplinado. [|Michel Foucault] usó los términos epistemológico, discursivo, matesis y taxinomial, para aspectos del paradigma en el sentido original dado por Kuhn// //Los paradigmas pueden ser descritos desde una perspectiva estructural. Operan en diferentes niveles: macro, meso y micro de la estructura paradigmática. Los niveles direccionan mejor la estructura fundamental de los paradigmas, y no tanto su categorización cronológica o histórica, ni su uso etimológico; como sucede en la mayoría de las disciplinas. Los niveles paradigmáticos están siempre presentes y no se encuentran limitados por tales categorías. Permiten además ayudar a comprender el funcionamiento de un paradigma.// v // Nivel macro ////: se requiere conocer la respuesta a "qué puede ser entendido". La pregunta es: ¿Puede asumirse en realidad que la esencia de las cosas ideales puede ser comprendida, como en la teoría de las ideas de [|Platón] y [|Aristóteles] ? ¿Tras la aproximación a lo esencial de estos dos filósofos no es posible inferir que "las mismas cosas se revelan como son, según se analiza en la [|ontología] fundamental de [|Heidegger] ? La suposición que hacemos al contestar estas preguntas nos predispone a una determinada forma de encarar el proceso de conocimiento.//  v // Nivel meso //// : // //la cuestión es determinar cómo el nivel macro influencia y transforma la teoría del conocimiento resultante: ¿El hombre es capaz solamente de un limitado conocimiento deductivo, o está abierto a un entendimiento inductivo y comprehensivo del universo? ¿Si el hombre es capaz de un conocimiento inductivo, dónde se origina éste? La respuesta en el nivel macro es fundamental para esta suposición. Todos los esfuerzos filosóficos, desde antes de [|Sócrates], tienden al esencialismo. La aproximación ontológica busca evadir la esencia de las cosas, requiriendo que éstas revelen por sí mismas cómo son.// v // Nivel micro //// : // //aquí la consecuente percepción de los dos niveles precedentes, contestando las preguntas sobre qué hay en el universo y cómo éste puede ser comprendido, se pone en práctica. ¿La praxis se construye sobre múltiples normas de conducta ( [|ética] ) o consiste en un encuentro abierto y fundamental con el universo según las diferentes formas de percepción? Las diferentes percepciones constituyen la "conciencia afectiva". El conocimiento previo y actual de la percepción está limitado a las categorías esenciales, mientras que la conciencia afectiva es por naturaleza abierta, ilimitada, inductiva y no restringida por el sentido de la percepción//
 * § //Cómo debe conducirse un experimento y qué equipamiento está disponible para realizarlo.//

// Paradigma de lo Orientado a Objetos: //

//Es un// // [|paradigma de programación] que usa [|objetos] y sus interacciones, para diseñar aplicaciones y programas [|informáticos]. Está basado en varias técnicas, incluyendo [|herencia], [|abstracción] , [|polimorfismo] y [|encapsulamiento]. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.//

//La Programación Orientada// //a Objetos (OOP por sus siglas en inglés de// //Object Oriented Programming) como paradigma, "es una forma de pensar, una filosofía, de la cual surge una cultura nueva que incorpora técnicas y metodologías diferentes. Pero estas técnicas y metodologías, y la cultura misma, provienen del paradigma, no lo hacen. La OOP como paradigma es una postura ontológica: el universo computacional está poblado por objetos, cada uno responsabilizándose por sí mismo, y comunicándose con los demás por medio de mensajes" [Greiff 1994].//

//La POO// //difiere de la [|programación estructurada] tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada solo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.//

//Los objetos son entidades que tienen un determinado estado, comportamiento (método) e identidad:// v //El estado está compuesto de datos o informaciones, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).// v //El comportamiento está definido por los [|métodos] o mensajes a los que sabe responder dicho objeto, es decir, qué operaciones se pueden realizar con él.// v //La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una [|variable] o una [|constante] ).// //Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados [|métodos], que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.// //Los métodos (comportamiento)// //y atributos (estado)// //están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El [|programador] debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una// // [|programación estructurada] camuflada// //en un lenguaje de programación orientado a objetos.//


 * Modelos computacionales y paradigmas de modelado**

La descripci�n que se ha proporcionado hasta aqu� no constituye un scorecard ni una evaluaci�n sistem�tica de los diferentes ADLs, sino una revisi�n de los principales lenguajes descriptivos vigentes para que el lector arquitecto se arme de una idea m�s precisa de las opciones hoy en d�a disponibles si lo que se requiere una herramienta de descripci�n de arquitecturas. Los arquitectos de software con mayor inclinaci�n hacia las cuestiones te�ricas y los m�todos formales habr�n podido apreciar la gran variedad de fundamentaciones sem�nticas y modelos computacionales que caracteriza al repertorio de los ADLs. La estructura de Darwin se basa en el c�lculo Л; Wright es pr�cticamente una aplicaci�n rigurosa del CSP de Hoare para su sem�ntica y de l�gica de primer orden para sus restricciones; LILEANNA se respalda en programaci�n parametrizada e hiper-programaci�n, as� como en teor�a categorial; los ADLs basados en eventos se fundan en Conjuntos de Eventos Parcialmente Ordenados (Posets). Casi todos los ADLs se acompa�an de una gram�tica BNF expl�cita y algunos (como Armani) requieren tambi�n familiaridad con la construcci�n de un Arbol Sint�ctico Abstracto (AST). Al menos un ADL contempor�neo, SAM, implementa redes de Petri de transici�n de predicados y l�gica temporal de primer orden y tiempo lineal. Un concepto importante que surge de haber considerado este abanico de posibilidades, e que no todo lo que tiene que ver con dise�o requiere compulsivamente notaciones y modelos de objeto. Considerando los ADLs en su conjunto, habr� podido comprobarse que la tradici�n de modelado OO, como la que se plasma a partir de [RBP+91], juega en este campo un papel muy modesto, si es que juega alguno; la reciente tendencia a redefinir los ADLs en t�rminos de mensajes, servicios, integraci�n, XML Schemas, xADL, SOAP y sus derivaciones no har� m�s que consolidar ese estado de cosas. En el campo del modelado arquitect�nico, UML/OOP tiende a ser antag�nico a la modalidad �estructural� representada por los ADLs. Grandes proyectos recientes, como el del equipo de JPL que est� definiendo el framework de Mission Data Systems para la NASA, ha decidido hace pocos meses reemplazar UML por ADLs basados en XML [MMM03]. Correlativamente, como bien destaca Paul Clements en uno de sus surveys, muy pocos ADLs pueden manejar conceptos b�sicos en el modelado OO tales como herencia de clases y polimorfismo [Cle96]. De m�s est� decir que ning�n ADL a la fecha permite incorporar inflexiones m�s complejas y sutiles como programaci�n orientada a aspectos, otro t�pico caliente en lo que va del siglo [MPM+99]. En la generalidad de los casos, tampoco es relevante que as� sea.


 * Modelos Computacionales**

- El circuito l�gico

­ La m�quina de estados finitos

-La m�quina de acceso aleatorio

- La m�quina de Turing




 * Circuitos L�gicos**

-Una DAG en la cual todos sus v�rtices, excepto los v�rtices de entrada y salida, est�n etiquetados con compuertas l�gicas

-Los circuitos l�gicos ejecutan programas estrictamente secuenciales, esto es, programas que consisten �nicamente de asignmientos

-No contienen ciclos ni saltos

-Los circuitos l�gicos constituyen los bloques b�sicos para la construcci�n de computadoras digitales.

-Cuando se combinan con celdas de memoria binarias, se pueden construir m�quinas con memoria (m�quinas de estados finitos)




 * M�quinas de Estados Finitos**

-Es una m�quina con memoria

-Ejecuta una serie de pasos en los cuales

-toma su estado actual de un conjunto de estados Q

-define su salida a partir de un conjunto de s�mbolos de entrada




 * La M�quina de Acceso Aleatorio**

Es modelada como dos m�quinas de estados finitos:

-unidad central de procesamiento (CPU)

-memoria de acceso aleatorio

-cmd: READ, WRITE, NO-OP

-Instrucciones:

- LOAD, STORE, ADD, SUB, MULT, DIV, READ, WRITE, JUMP, JZ, JNZ, HALT


 * M�quina de Turing**

-Cinta no acotada formada por casillas

-mecanismo de control, i. e., aut�mata con diversos estados

-cabeza de lectura con la que examina, en cada instante, una casilla en la cinta

-programa, lista de qu�ntuples de la forma Se entiende por **paradigma**: un conjunto de presuposiciones valores y creencias acerca de la ciencia en general. Por otra parte: un tipo de ciencia o una ciencia en concreto. Se entiende por **modelo**: Representaci�n esquem�tica o conceptual de un fen�meno, que representa una teor�a o hip�tesis de c�mo dicho fen�meno funciona. Los modelos normalmente describen, explican y predicen el comportamiento de un fen�meno natural o componentes del mismo.

Para comenzar, daremos algunas definiciones. Primero, llamaremos Sistema a una entidad real o artificial. De hecho no existe una definici�n de sistema que tenga aceptaci�n general. Se llama sistema a una parte de una realidad, restringida por un entorno. Est� compuesto por entidades que experimentan efectos espacio-tiempo y relaciones mutuas. Tambi�n se dice que un sistema es un conjunto ordenado de objetos l�gicamente relacionados que atraviesan ciertas actividades, interactuando para cumplir ciertos objetivos. Para lo que nos concierne, distinguimos dos interpretaciones de la palabra sistema:

a) Un sistema real : Es una combinaci�n de elementos con relaciones estructurales que se influencian mutuamente.

b) Un sistema din�mico : Es una construcci�n formal que nos da conceptos generales de modelizaci�n para distintas clases de disciplinas.

Modelo: Representaci�n inteligible (abstracta y consistente) de un sistema. En muchos casos no se puede resolver un problema directamente sobre un sistema real, por ende razonamos sobre modelos. El proceso de pensar y razonar acerca de un sistema resaltando la reacci�n de un modelo se llamamodelado de sistemas.

Para estudiar sistemas complejos, la idea es partir haciendo un modelo del sistema que se quiere estudiar, y se estudian problemas del sistema real estudiando el modelo.

Llamaremos paradigma a un conjunto de conceptos, leyes y medios que sirven para definir un conjunto de modelos. Los modelos se construyen sobre un paradigma particular.

Ejemplo 1 Consideremos el dise�o de un circuito digital. Si analizamos la medici�n de corrientes y tensiones estamos razonando sobre un modelo el�ctrico, en cambio si se hace un estudio de las funciones booleanasque realiza, se razona sobre un modelo l�gico. Ejemplo 2 Consideremos un lenguaje de programaci�n algor�tmico como Pascal. Aqu� usamos el paradigma demodelizaci�n secuencial/procedural, con el fin de construir un modelo que en este caso es un programa modelado por una actividad secuencial. De la misma forma, el simbolismo de circuitos l�gicos es un paradigma en el cual un esquema es el modelo de un circuito digital. En base a compuertas l�gicas y un conjunto de reglas de conexi�n, permitimos la construcci�n de un sistema de circuitos l�gicos.

** Sistemas complejos ** Básicamente, un sistema puede definirse como un «conjunto de elementos en interacción» (Bertalanffy, 1968). Los sistemas complejos (organismos pluricelulares, colonias de hormigas, ecosistemas, economías, sociedades…) están caracterizados por tener una estructura compuesta por varios niveles. En estos sistemas complejos (Vicsek, 2002; Gilbert, 2004): • Los componentes de niveles jerárquicos inferiores suelen mostrar un grado de autonomía significativo. • El comportamiento del sistema surge a partir de la auto-organización de sus componentes, sin que esta organización esté controlada ni dirigida por ningún ente exterior al sistema. • Los componentes básicos de estos sistemas complejos (células, hormigas, individuos, poblaciones, empresas…) perciben su entorno y responden a cambios en él de forma potencialmente diferente. Por si esto fuera poco, muchos sistemas complejos son también adaptativos. En estos sistemas adaptativos (organismos, ecosistemas, economías, sociedades…), el comportamiento de los componentes básicos del sistema puede evolucionar en el tiempo, dando lugar a una cierta capacidad de respuesta frente a cambios en el entorno por medio de mecanismos de: • Aprendizaje a escala individual, y/o selección y reemplazo (lo cual da lugar a un aprendizaje a escala poblacional). Todas estas características hacen que el proceso de modelado formal de sistemas complejos difiera sustancialmente del de otros sistemas más simples. En particular, su naturaleza descentralizada, la presencia de bucles de causalidad y retroalimentación no lineales, y el hecho de contener varias unidades más o menos autónomas, que pueden interaccionar, evolucionar, y adaptar su comportamiento a cambios en el entorno, implica que en la mayoría de los casos es muy difícil, si no imposible conseguir un modelo que pueda describir el sistema complejo adecuadamente y que además sea resoluble matemáticamente. ** La simulación computacional como herramienta de análisis de modelos formales. ** Hasta hace pocas décadas, no poder resolver matemáticamente un modelo formal suponía una desventaja importante, puesto que carecíamos de otras herramientas con las que deducir las implicaciones lógicas que de él se derivaban. Esto cambió radicalmente con la invención y el desarrollo del ordenador. Hoy en día, los ordenadores nos permiten explorar y analizar modelos formales que no podemos resolver matemáticamente. De esta forma, usando las nuevas tecnologías, podemos implementar y analizar rigurosamente el comportamiento de modelos formales de sistemas complejos algo inviable hasta hace poco. Un modelo que está implementado y que puede ejecutarse en un ordenador es un modelo necesariamente formal (Suber, 2007) y, por lo tanto, no difiere sustancialmente de un modelo matemático tradicional. Tanto los modelos computacionales como los modelos matemáticos son modelos formales; la única diferencia fundamental es que están expresados en lenguajes diferentes. En particular, todo modelo computacional puede expresarse en lenguaje matemático como un conjunto de ecuaciones potencialmente muy difícil de resolver (ver p. ej. Epstein, 2006; Leombruni & Richiardi, 2005). En esencia, un modelo formal (sea éste computacional o matemático) puede verse como un conjunto de proposiciones que se admiten como ciertas (axiomas) más un conjunto de reglas de inferencia que pueden usarse para deducir nuevas proposiciones a partir de los axiomas y de proposiciones inferidas previamente. Como ejemplo, uno podría escribir el programa computacional «//y// = 2·//x//» (regla) y aplicarlo a las condiciones iniciales «//x// = 10» (axioma) para obtener el resultado «//y// = 20». El resultado (//y// = 20), que está unívoca e inequívocamente determinado por las condiciones iniciales (//x// = 10) y el conjunto de reglas que definen el modelo (//y// = 2·//x//) puede verse como un teorema matemático obtenido mediante deducción lógica ({//x// = 10; //y// = 2·//x//} _ //y// = 20). Naturalmente, no hay razón por la que las condiciones iniciales, las reglas o los resultados deban ser necesariamente numéricos; podrían ser, por ejemplo, cadenas de caracteres con significado en un determinado lenguaje verbal. En el caso general, la inferencia obtenida al ejecutar un modelo computacional tiene la siguiente forma: //Los resultados obtenidos al ejecutar la simulación computacional se derivan por deducción (y, por lo tanto, con necesidad lógica) de aplicar las reglas algorítmicas que definen el modelo al conjunto de condiciones iniciales con las que el modelo se ha parametrizado//. De esta forma, independientemente de su mayor o menor complejidad interna, una simulación computacional constituye un teorema de suficiencia perfectamente válido. Resulta útil pensar que uno siempre podría aplicar las mismas reglas de inferencia codificadas en el modelo computacional para obtener —por deducción lógica los mismos resultados dadas las mismas condiciones iniciales. Esta afirmación, como pensamiento, resulta útil, pero a la hora de obtener resultados es mucho más eficiente, rápido y fiable dejar que un ordenador haga el trabajo por nosotros. Los ordenadores son máquinas de inferencia capaces de llevar a cabo procesos algorítmicos a velocidades inalcanzables por la mente humana. Resumiendo, un modelo computacional es un modelo formal (que por lo tanto puede expresarse en lenguaje matemático como un conjunto de ecuaciones), y la simulación computacional es una herramienta que nos permite estudiarlo más allá de los límites actuales de las matemáticas. De este modo, el resultado final es un modelo potencialmente más realista, y que todavía conserva el rigor formal de los modelos matemáticos más tradicionales. ** Esquema de modelado computacional de sistemas complejos. **

La posibilidad de trabajar con modelos formales más complejos que los modelos matemáticos tradicionales nos obliga a expandir ligeramente el marco del proceso de modelado científico que introdujimos en la sección anterior. Cuando tratamos de modelizar sistemas complejos, raramente construimos un modelo formal directamente sobre el sistema real. Normalmente la mayoría de los científicos abstraemos, consciente o inconscientemente, un modelo intermedio de cómo creemos que el sistema real funciona, y es esta abstracción a menudo incompleta y no formal la que modelizamos formalmente. Lamentablemente, no es frecuente encontrar artículos científicos en los que este primer modelo no formal se hace explícito. De hecho, esta primera abstracción suele permanecer eternamente en el etéreo ámbito de los modelos mentales. **// Proceso de modelado con abstracción intermedia //**//. // La figura muestra un esquema secuencial por claridad pero, como se explica en la segunda sección, el proceso de modelado contiene en general varios bucles de retroalimentación. Cuando existen una o más capas intermedias entre el sistema real y nuestro modelo formal, la secuencia básica de modelado se ve modificada sustancialmente (Edmonds et al., 2001; Galán et al., 2008). Independientemente de la naturaleza o complejidad del sistema real, nuestro objetivo sigue siendo el mismo: avanzar nuestro conocimiento sobre el funcionamiento del sistema real mediante la construcción y el análisis de modelos. Para explicar cada una de las etapas del proceso de modelado de sistemas complejos encontramos útil distinguir tres roles (Drogoul et al., 2003): //experto//, //modelador// y //ordenador// (ver fig. 2). Es importante resaltar que a menudo es una única persona la que asume los roles de experto y de modelador (y hasta a veces incluso el rol del ordenador), pero no siempre es así. El //experto// es una persona con un gran conocimiento del sistema real que se pretende modelizar y de su funcionamiento. Sin embargo, el experto no está necesariamente familiarizado con la creación y el uso de modelos formales. El //modelador//, por el contrario, es un profesional cuya labor principal consiste en diseñar, implementar y analizar modelos formales. El modelador tiene, por tanto, conocimientos avanzados de algún formalismo que permita crear y estudiar modelos formales (ej. cálculo simbólico, lógica preposicional, o un lenguaje de programación). Finalmente, el //ordenador// es el encargado de ejecutar o resolver el modelo formal, el ordenador deduce las implicaciones lógicas que se derivan de las premisas que definen el modelo y de las condiciones iniciales. Tradicionalmente, esta labor deductiva venía siendo realizada por matemáticos, quienes a menudo eran capaces de resolver el modelo formal para casos muy generales. En el caso de modelos de sistemas complejos cuya resolución matemática general es en muchas ocasiones inviable es un ordenador el que normalmente asume este rol. Una vez presentados los tres roles, pasamos a explicar brevemente cada una de las etapas del proceso de modelado. // Abstracción. // La primera etapa es el proceso de abstracción, el cual nos conduce a un primer modelo que recoge los aspectos más relevantes del sistema real. Esta primera actividad es realizada por el experto, comienza con la observación del sistema real (que a menudo incluye una extracción de datos), y finaliza con la primera conceptualización del sistema objetivo. El trabajo del experto consiste en definir los objetivos concretos que se pretenden alcanzar con el proceso de modelado, identificar los componentes más importantes del sistema y las interacciones que pueda existir entre ellos, y describir las relaciones causales más significativas. El resultado de la labor del experto es un modelo normalmente no formal, frecuentemente expresado en lenguaje natural, y que a menudo incluye diagramas conceptuales sencillos ( ej. diagramas de bloques). Es posible que esta primera abstracción no sea completa, y use términos ambiguos como «aprendizaje » o «imitación» sin especificar de manera precisa cómo se producen exactamente. Además, puesto que a menudo este primer modelo está expresado en lenguaje natural, es posible que ni siquiera tenga coherencia lógica interna. Lo que sí que debe recoger de manera clara e inequívoca esta primera abstracción es el conjunto de componentes, interacciones y variables críticas del sistema. // Diseño & Codificación. // La segunda etapa consiste en diseñar e implementar un modelo formal a partir de la abstracción llevada a cabo por el experto. Esta tarea corre a cargo de la persona que asume el rol del modelador (que potencialmente es la misma que asumió el rol de experto), y supone dos retos fundamentales que explicamos a continuación. El primer reto aparece cuando el modelo creado por el experto no está completamente especificado, algo que ocurre con sorprendente frecuencia. Imagine, por ejemplo, que el experto explica que una población evoluciona de forma que los individuos con más recursos tienden a reproducirse más que aquellos con menos recursos. Obviamente, existe una infinidad de algoritmos diferentes que implementan esta idea: la relación entre recursos y número de descendientes puede ser lineal, cuadrática, exponencial, etc. Todas estas relaciones satisfacen la premisa del experto y por lo tanto son en principio igualmente válidas pero asumir una u otra conducirá en general a diferentes resultados al ejecutar el modelo formal. En otras palabras, a menudo existen multitud de modelos formales diferentes que se ajustan perfectamente a las especificaciones del experto. El segundo reto surge cuando el modelo proporcionado por el experto carece de coherencia interna, algo que puede ocurrir perfectamente puesto que es frecuente que la abstracción del experto esté expresada en lenguaje natural. Descubrir incoherencias lógicas en modelos no formales no es una tarea trivial. Varios autores (p. ej. Christley et al. (2004), Pignotti et al. (2005), y Polhill et al. (2007)) han enfatizado la utilidad de ontologías para llevar a cabo esta tarea, particularmente en el dominio de las simulaciones sociales computacionales. En cualquier caso, estos dos retos para el modelador ponen de manifiesto el enorme valor que tiene formalizar modelos. En resumen, el modelador deberá tratar de diseñar e implementar un modelo o conjunto de modelos formales tales que a cada uno de ellos sea una particularización válida de las especificaciones del experto y (b) todos ellos en conjunto constituyan una expresión representativa de la abstracción del experto. Para ello, el modelador, a menudo en constante comunicación con el experto, deberá acordar y realizar varias suposiciones de naturaleza muy diversa. Algunas suposiciones vendrán impuestas por la necesidad de producir un modelo completamente especificado, y darán lugar a particularizaciones concretas de ideas generales expresadas por el experto. Otras suposiciones serán necesarias para poder ejecutar el modelo con la tecnología disponible (ej. representar un espacio tridimensional como un conjunto de celdas bidimensionales). Finalmente, es posible que haya suposiciones implícitamente codificadas en el modelo formal y que ni siquiera el propio modelador sea plenamente consciente de que las está imponiendo (ej. el uso de aritmética de punto flotante en vez de aritmética real). Una vez diseñado el modelo formal, el modelador podrá implementarlo en multitud de formalismos diferentes. En particular, todo modelo computacional puede expresarse como un conjunto de ecuaciones matemáticas (Leombruni & Richiardi, 2005; Epstein, 2006) y también puede re-implementarse en cualquier lenguaje de programación que permita el uso de secuenciación, selección e iteración (Böhm & Jacopini, 1966; Harel, 1980). Diferentes re-implementaciones son simplemente diferentes formas de representar la misma relación entrada- salida. Conviene mencionar que cuando el experto y el modelador son roles ocupados por la misma persona (algo que ocurre frecuentemente), el modelo no formal no suele ser explícito (y mucho menos estar publicado). No obstante, en ocasiones son dos personas diferentes las que asumen sendos roles, y entonces resulta sencillo distinguir el modelo no formal propuesto por el experto del modelo formal desarrollado por el modelador. El desarrollo de la teoría clásica de difusión de innovaciones desarrollada en los años sesenta representa un interesante. Ejemplo. En 1962 Everett M. Rogers publicó su conocido libro //Diffusion of Innovation// (Rogers, 1962), en el que propone un completo y descriptivo marco conceptual sobre la difusión de innovaciones. En este marco conceptual, que es fundamentalmente discursivo y no formal, Rogers clasifica los elementos fundamentales del proceso de difusión en cuatro categorías: la naturaleza de la propia innovación, el canal de comunicación, el sistema social al que se comunica, y el tiempo. Siete años más tarde, Bass (1969) publicó un influyente artículo formalizando los aspectos temporales del modelo propuesto por Rogers.

media type="custom" key="18937490" align="left" width="86" height="86"

En los inicios de la informática, la programación se consideraba un arte y se desarrollaba como tal, debido a la dificultad que entrañaba para la mayoría de las personas, pero con el tiempo se han ido descubriendo y desarrollando formas y guías generales, con base a las cuales se puedan resolver los problemas. A estas, se les ha denominado Arquitectura de Software, porque, a semejanza de los planos de un edificio o construcción, estas indican la estructura, funcionamiento e interacción entre las partes del software. En el libro "An introduction to Software Architecture", David Garlan y Mary Shaw definen que la Arquitectura es un nivel de diseño que hace foco en aspectos "más allá de los algoritmos y estructuras de datos de la computación; el diseño y especificación de la estructura global del sistema es un nuevo tipo de problema"
 * Arquitectura de Software **

ejemplo de arquitectura de sofware