La programacion. No es algo tan sencillo, incluso le puede dar dolores de cabeza a los que saben. Mas antes, cuando cada quien agarraba por su lado. Con el tiempo se han ido descubriendo y desarrollando formas y guías generales, en base a las cuales se puedan resolver los problemas. A estas, se les ha denominado Arquitectura de Software, por que, semejanza de los planos de un edificio o construcción, estas indican la estructura, funcionamiento e interacción entre las partes del software.

Hay muchas definiciones "oficiales" delo que podria ser arquitectura de software.
Una definición reconocida es la de Clements [Cle96a]: La AS es, a grandes rasgos, una vista del
sistema que incluye los componentes principales del mismo, la conducta de esos componentes
según se la percibe desde el resto del sistema y las formas en que los componentes interactúan
y se coordinan para alcanzar la misión del sistema. La vista arquitectónica es una vista abstracta,
aportando el más alto nivel de comprensión y la supresión o diferimiento del detalle inherente a
la mayor parte de las abstracciones.
Una definición reconocida es la de Clements [Cle96a]: La AS es, a grandes rasgos, una vista del
sistema que incluye los componentes principales del mismo, la conducta de esos componentes
según se la percibe desde el resto del sistema y las formas en que los componentes interactúan
y se coordinan para alcanzar la misión del sistema. La vista arquitectónica es una vista abstracta,
aportando el más alto nivel de comprensión y la supresión o diferimiento del detalle inherente a
la mayor parte de las abstracciones.
Cada paradigma de desarrollo exige diferente número y tipo de vistas o modelos para describir una arquitectura. No obstante, existen al menos tres vistas absolutamente fundamentales en cualquier arquitectura:
La visión estática: describe qué componentes tiene la arquitectura.
La visión funcional: describe qué hace cada componente.
La visión dinámica: describe cómo se comportan los componentes a lo largo del tiempo y como interactúan entre sí.
La visión estática: describe qué componentes tiene la arquitectura.
La visión funcional: describe qué hace cada componente.
La visión dinámica: describe cómo se comportan los componentes a lo largo del tiempo y como interactúan entre sí.
Generalmente, no es necesario inventar una nueva arquitectura de software para cada sistema de información. Lo habitual es adoptar una arquitectura conocida en función de sus ventajas e inconvenientes para cada caso en concreto. Así, las arquitecturas más universales son:
Monolítica. Donde el software se estructura en grupos funcionales muy acoplados.
Cliente-servidor. Donde el software reparte su carga de cómputo en dos partes independientes pero sin reparto claro de funciones.
Arquitectura de tres niveles. Especialización de la arquitectura cliente-servidor donde la carga se divide en tres partes (o capas) con un reparto claro de funciones: una capa para la presentación (interfaz de usuario), otra para el cálculo (donde se encuentra modelado el negocio) y otra para el almacenamiento (persistencia). Una capa solamente tiene relación con la siguiente.
Monolítica. Donde el software se estructura en grupos funcionales muy acoplados.
Cliente-servidor. Donde el software reparte su carga de cómputo en dos partes independientes pero sin reparto claro de funciones.
Arquitectura de tres niveles. Especialización de la arquitectura cliente-servidor donde la carga se divide en tres partes (o capas) con un reparto claro de funciones: una capa para la presentación (interfaz de usuario), otra para el cálculo (donde se encuentra modelado el negocio) y otra para el almacenamiento (persistencia). Una capa solamente tiene relación con la siguiente.
-->Ahora bien, los modelos de arquitectura de software vistos son los siguientes:
Modelo Vista Controlador (MVC) es un estilo de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de Negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.
La programación por capas es un estilo de programación en el que el objetivo primordial es la separación de la lógica de negocios de la lógica de diseño; un ejemplo básico de esto consiste en separar la capa de datos de la capa de presentación al usuario. La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en varios niveles y, en caso de que sobrevenga algún cambio, sólo se ataca al nivel requerido sin tener que revisar entre código mezclado.
El diseño más utilizado actualmente es el diseño en tres niveles (o en tres capas).
1.- Capa de presentación: es la que ve el usuario (también se la denomina "capa de usuario"), presenta el sistema al usuario, le comunica la información y captura la información del usuario en un mínimo de proceso (realiza un filtrado previo para comprobar que no hay errores de formato). Esta capa se comunica únicamente con la capa de negocio. También es conocida como interfaz gráfica y debe tener la característica de ser "amigable" (entendible y fácil de usar) para el usuario.
2.- Capa de negocio: es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envían las respuestas tras el proceso. Se denomina capa de negocio (e incluso de lógica del negocio) porque es aquí donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los resultados, y con la capa de datos, para solicitar al gestor de bases de datos para almacenar o recuperar datos de él. También se consideran aquí los programas de aplicación.
3.- Capa de datos: es donde residen los datos y es la encargada de acceder a los mismos. Está formada por uno o más gestores de bases de datos que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio.



Hola Jess
ResponderEliminarexcelente titulo para tu post, bueno la verdad es que es muy cierto lo complicado que puede llegar a ser la programación, y es que cuanto años tardamos en aprender un idioma y dominarlo como el ingles, ahora bien nos ponemos a pensar que los lenguajes de programación son lenguajes abstractos que nos ayuda a poder darle ordenes al software para que hasga lo que nosotros queremos, y bien ahora estamos en una epoca donde todo lo impreso esta quedando atras y dentro de un tiempo sera de suma importancia saber lenguajes de programación como hoy en dia es importantisimo no solo saber ingles si no hasta otros 2 idiomas más. en si no me queda mas que fecilitarte por tu blog.