Arquitectura de Software – Overview

Paradigmas de Desarrollo

Un paradigma de desarrollo de software es un estilo o manera standard de pensar el desarrollo

 Paradigmas de Desarrollo de Software

·         La manera en cómo se encara un problema, puede significar la diferencia de algunas órdenes de gran complejidad en el desarrollo de software.

·         En virtud a esta importancia, surgieron diversos paradigmas donde el estudio de estas permite comprender la evolución de la ciencia de computación

·         Así como diferentes grupos de ingeniería de software proponen diferente s metodologías; diferentes lenguajes de programación proponen diferentes paradigmas de programación.

·         Los paradigmas de programación se diferencian muchas veces por las técnicas que prohíben o permiten.

·         La relación entre paradigmas de programación y lenguaje de programación puede ser complejas pero los lenguajes de programación pueden soportar más de un paradigma.

Por ejemplo, la programación estructurada no permite el uso de la sentencia GoTo.

Nombraré algunos paradigmas:

·         Programación no estructurada

·         Programación procedural

·         Programación estructurada

·         Programación declarativa

·         Programación funcional

·         Programación dirigida a eventos

·         Programación orientada a flujos

·         Programación orientada a flujo de datos

·         Programación orientado a políticas

·         Programación orientado a objetos

·         Programación de pasajes de mensajes

·         Programación orientada a aspectos

Programación No Estructurada

·         Todo código contenido en un único bloque.

·         Uso de la sentencia Goto.

·         Assembly

·         Batch

Programación Estructurada

·         Basado en programación procedural

§  Código organizado en bloques llamados procedures

·         Principal restricción es la prohibición del uso de la sentencia GoTo.

Ejemplo en lenguaje Basic:

Dim i
For i=1 to 10
                Print i; “ squared = “; i*i;
Next
Print “ Program completed.”

Programación Funcional

·         Con una concepción de computación como evolución de funciones matemáticas, la programación funcional enfoca la ausencia de estado y modificación de contenido.

·         Lenguajes como XSLT son funciones, y C o C++ son bastante apropiado para implementación de aplicaciones siguiendo este paradigma.

·         La construcción de código funcional facilita el uso de recursos de paralelismo en aplicaciones

Conceptos:

·         Funciones Higher-order

·         Funciones como Entrada y/o Salida

·         Funciones Puras

·         Recurrencia

Ejemplo lenguaje J:

Key sin(exp), cos(exp) plot(;(sin, :cos)@^)-:>:i:3j100

Programación orientada a eventos

·         Lenguajes de programación orientados a eventos como Visual Basic 6 o anteriores, tomaron gran importancia con el uso de interfaces graficas en usuarios de Windows.

·         El principio básico es el que una aplicación espera acciones del usuario, de otras aplicaciones, del sistema operativo, o de hardware, que provocan los llamados eventos.

El tratamiento de eventos de Windows es organizado por colas de mensajes. Este proceso es conocido como “Message Pump”.

Programación orientada a objetos

·         Utiliza la abstracción de objetos para el modelaje de clases

§  Tienen estado y funcionalidad

Principales conceptos: Clases, Objetos, Métodos, Herencia, Encapsulamiento, Abstracción, Polimorfismo.

Diagrama UML – Programación orientada a objetos

Clase: Course

Properties: Name, Course Number, Fees

Methods: GetFullName(), GetCourseNumber(), SetCourseNumber(number), GetFees(), SetFees(amount), GetName(), SetName(name)

Objeto: Course1

Objeto: Course 2

Name=Mathematics

Name=Literature

Course Number=1

Course Number=2

Fees=20

Fees= 25


Programación de Pasaje de Mensajes

Conceptos:

·         Loose Coupling

·         Concurrent Computing

·         Distributed Computing

Loose Coupling

·         Que las clases dependan lo menos posible entre si

·         Permite independizar las distintas áreas de funcionalidad y se aplica varios patrones de diseño. Ej. Patrón de diseño Arquitectónico de división  en capas, Patrón de diseño de programación orientada a servicios.

En el caso de las capas el Loose Coupling nos permite hacer desarrollos independientemente de la tecnología, nos permite trabajar con interfaces graficas diferenciadas desacoplando la capa de presentación como por ejemplo podría ser una capa Web o una capa de dispositivo Móvil permitiendo que se pueda crear una capa independiente de la capa de negocio.

Concurrent Computing

Atender a varios usuarios de forma simultanea

Facilita:

·         Programación Asincrónica

·         Programación sin gerenciamiento de estado

·         Programación concurrente

·         Programación distribuida

·         Programación funcional

Ejemplos:

·         SOAP – Web Services

·          Project (Para C# 3.0)

Aplicada juntamente con la aplicación orientada a objetos, permite el desarrollo de aplicaciones basadas en arquitectura SOA.

Lo más obvia es la basada en el protocolo SOAP (Simple Object Access Protocol) que es la base de los servicios web donde tenemos pasajes de mensajes de formato XML de un lado a otro usando el protocolo de transporte http.

Código Net para tratamiento de documentos XML:

decimal GetTotalbyZip(XmlDocument doc, int zip)

        {

            //for each order in 98052 zip code, do price * quantity, of item and add it

            //to the running total.

            decimal total =0;

            string xpathQuery = "orders/order[zip=’" + zip+ "’]/item";

 

            foreach (XmlDocument item in doc.SelectNodes(xpathQuery))

            {

                XmlNode price = item.SelectSingleNode("price");

                XmlNode qty = item.SelectSingleNode("qunatity");

                decimal p = Decimal.Parse(price.InnerText);

                decimal q = Decimal.Parse(qty.InnerText);

                total +=p*q;

            }

            return total;

        }

Código

public decimal GetTotalbyZip(Orders orders, int zip)

{

float total =0;

 

      foreach (Item item in orders.order[zip == zip].item)

      {

            Total += item.price * item.quantity;

      }

      Order.total = total;

}

Programación orientada a Políticas

·         Lenguajes basadas en plataformas de maquinas virtuales como Java o .Net, posibilitan el desenvolvimiento de aplicaciones que tengan un comportamiento modificado por el entorno en tiempo de compilación o de ejecución.

·         Políticas de compilación pueden envolver configuraciones como selección de la base de datos utilizada o plataforma destino.

·         Políticas de ejecución pueden indicar el lugar del servidor de base de datos o el de aplicación y políticas de seguridad, con alguna cuenta a ser utilizada o detalles de acceso.

Reglas establecidas para ejecución de código

En .Net las políticas son implementadas con la clausula Atributos:

[HelpAttribute(“http://localhost/MyClassInfo”)]
class MyClass{}

Programacion orientada a Aspectos

Este paradigma procura aislar (isolate) los diversos aspecxtos de una aplicación, llamados de intereses (concern)

Caracteristicas: Crosscutting Concerns, Join Point, Piunt Cut, Mixin, Weaving, Advice

Enterprise Library nos brinda muchas de estas características.

Aplicación de Paradigmas

·         Service Oriented Architecture (SOA)

·         High-Performance Computing (HPC)

Paradigmas involucrados:

·         Programación orientada a objetos

·         Programación de pasajes de mensajes

·         Programación orientada a políticas

Jonnathan De La Barra PC
"Manteniendo el Aprendizaje Continuo"
"Las preguntas derivan de una curiosidad natural por aprender "
"Nuestro miedo a cometer errores está tan arraigado en nosotros que habitualmente reaccionamos ante ellos cegándonos a la enseñanza y al aprendizaje real que contienen"

About justindeveloper

I am MCP (Microsoft Certified Professional). MCTS (Microsoft Certified Technology Specialist) and MCPD (Microsoft Certified Professional Developer), also I am SAP Business One Certified!! Desarrollando desde el IDE de Visual Studio NET 2003 hasta ahora con el Visual Studio NET 2010. Desde Microsoft SQL Server 2000 hasta ahora con el Microsoft SQL Server 2008 R2 y tambien con SharePoint, desde WSS 3.0 y MOSS 2007 y ahora familirizandome con el Sharepoint Foundation 2010 & Sharepoint Server 2010. The software development will follow being every time more wonderful!
This entry was posted in Development. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s