La revisión de código

La revisión de código es una parte muy importante al momento de realizar un proyecto, porque es cuando se tiene qué pulir el código para que se vea de una manera más limpia, así como cuando se tienen que hacer todas las correcciones, o el «debug».

Este proceso consiste en la detección temprana de errores de un programa, para así mejorar su funcionamiento y se utilizan alternativas más eficientes a la implementación inicial. También se hace para mejorar las cualidades de los desarrolladores. Generalmente se lleva a cabo en equipos.

A continuación explicaré un poco los tipos de revisión de código:

Formal Code Review (FCD)

En esta forma de código, los equipos crean un plan de desarrollo donde se lleva a cabo la parte de crear el proyecto, desde la planeación previa, la creación, y al final, se tiene una junta para revisar qué fue lo que se realizó, paso a paso y finalmente se definen los cambios a realizar.

Lightweight Code Review

En este tipo de programación se pueden destacar estos siguientes métodos:

  • Pair programming: Este tipo de review se lleva a cabo en parejas utilizando una computadora, mientras uno está escribiendo el código, el otro está checando línea por línea, y se van rotando constantemente.
  • Over the shoulder inspection: En este método una persona está trabajando mientras un equipo está detrás de él viendo y se le indica cuando hay un error, y se resuelve juntos. Esta práctica es muy eficiente cuando los trabajadores están juntos en la misma oficina y pueden trabajar en equipo, pero si están separados no funciona.
  • Email pass-around inspection: En este caso, los miembros del equipo se envían por e-mail el código, a todos los demás miembros, y así, se van enviando retroalimentaciones y el desarrollador principal es el encargado de recolectar todos los feedbacks y aplicarlos al código.
  • Tool-assisted code review: Este método es el más utilizado hoy en día por los desarrolladores, ya que no se interrumpen las demás tareas. Existen muchas herramientas que nos ayudan a hacer esta revisión, y también algunas ayudas como son:
    • Discusión del código
    • Múltiples iteraciones de revisión del código
    • Reportes y estadísticas

En mi opinión, la parte de la revisión de código es una parte fundamental para el proyecto. Hoy en día es muy importante el tener un código limpio y funcional, y me parece que tenemos muchas herramientas para poder hacer nuestro review en tiempo real. Ya no es necesario establecer un horario y un lugar entre muchísimas personas para juntarse y poder tener el review. Ahora con la tecnología es mucho más fácil y es muy importante para poder terminar de manera excelente el proyecto.

Second Reflection

En este segundo parcial pude aprender todavía más herramientas que son muy importantes para el desarrollo de software. Gracias a esto, se complementó todo lo aprendido en el primer parcial, y sobre todo me pude enfocar mucho ya en la parte de crear clases y empezar a planear bien lo que será el proyecto.

Este parcial uno de los temas más importantes fue el de los diagramas UML, esto debido a que es uno de los modelos más utilizados y que ha logrado estandarizar todos los procesos y es usado en todo proceso para poder crear un software que cumpla con todos los requerimientos y con un buen diseño, así como para tener una buena funcionalidad.

En este post estaremos haciendo un segundo review sobre los temas que se vieron en este parcial.

Design Patterns

Cuando se está desarrollando un software muy seguramente existirá más de un inconveniente, y muy probablemente ese problema o alguno similar ya lo habrá sufrido algún desarrollador antes, por eso mismo es que han sido creados los patrones de diseño.

Estos patrones tienen como finalidad poder resolver problemas comunes, y de este modo se puede ahorrar tiempo, se utiliza un lenguaje común, y, estos patrones están diseñados por profesionales y desarrolladores experimentados, por lo que también se garantiza una validez de código.

Los patrones de diseño más comunes son:

  • Patrones de diseño creacional
    • Abstract factory
    • Factory Method
    • Builder
    • Singleton
    • Prototype
  • Patrones estructurales
    • Abstract factory
    • Factory Method
    • Builder
    • Singleton
    • Prototype
  • Patrones de comportamiento
    • Comando
    • Cadena de responsabilidades
    • Interpretador
    • Iterador
    • Mediador
    • Observador
    • Visitante
    • Estrategia

UML

Como he mencionado más arriba, el modelo UML es un tema muy importante, es un tema con suma importancia que se dividió en parte 1 y parte 2.

El lenguaje UML ha hecho que se unifique el proceso de elegir herramientas para desarrollar software, debido a que al existir una infinidad de estas, cada desarrollador escogía la que más le pareciera y más adelante para compartir el software era un problema.

Esta unificación se ha logrado debido a todas las herramientas que UML ofrece, como son todos los diagramas que, además de ser sencillos de crear, también son muy fáciles de entender, además de que se ha podido crear varios diagramas para un solo proyecto. Un beneficio que también existe es que existen muchas herramientas para poder crear los diagramas, incluso en algunas te van explicando paso a paso cómo deben de crearse.

A continuación mencionaré los diagramas más comunes, sin embargo, existen muchos más:

  • Diagramas secuenciales
  • Diagramas de clase
  • Diagramas de objetos
  • Diagramas de estado
  • Diagramas de paquetes
  • Diagramas de componentes
  • Diagramas entidad relación

Qué sigue después de las clases?

Normalmente cuando alguien habla sobre programar o desarrollar software lo primero que se nos viene a la mente es una persona frente a la computadora escribiendo código por horas.

Esto es muy cierto, sí es una parte que pasa cuando se está creando un proyecto, sin embargo, no es lo primero que se tiene que hacer, ni lo más importante. Existe todo un proceso detrás que es lo primordial para que un software sea exitoso y sea más sencillo de programar.

Estos diagramas y tablas que se han creado, nos ayudan a planear muy bien cómo va a ser el desarrollo de código, ya que esto nos ayuda a tener una perspectiva más visual y no tan abstracta sobre cómo funcionará nuestro programa.

Después de tener un diseño ya hecho, sigue la parte de crear código, que se logra con unos ciertos pasos previos, como es el crear tablas por medio del modelo entidad-relación y con todos los diagramas donde se representan todas las clases, atributos y métodos que se requieren al momento de programar. Esto se puede ver con mayor detalle en mi post sobre las tablas y el código.

Lo primero es entender cada diagrama y su relación que tiene y, así, después continuar con la parte de pasarlo al código. Al principio puede llegar a ser un poco confuso, sin embargo, conforme la práctica te vas dando cuenta que no lo es tanto, es un proceso sencillo y que te prepara muchísimo para no tener complicaciones.

Code Review

Finalmente, llegamos a la revisión de código. Que es un proceso muy importante porque es cuando nosotros podemos darnos cuenta de todos los errores que se tienen en nuestro software. Además, ayudan a los desarrolladores a mejorar sus prácticas de programar y a limpiar el código

Las prácticas más comunes son:

  • Formal Code Review
  • Lightweight Code Review
    • Pair programming
    • Over the shoulder inspection
    • Email pass-inspection
    • Tool-assisted code review

Este parcial yo me di cuenta que es muy importante de verdad toda esta parte de la creación y planeación de softwares. Es muy importante entender qué es lo que se está solicitando, si no esto ocasionará un problema, y es por eso que se han creado todas estas herramientas.

En este tiempo que he trabajado con mi proyecto, también me di cuenta la importancia que tiene trabajar en equipo y sobretodo tener una buena organización y comunicación, además, es una parte importante ya que sin ellos nos sería muy difícil y tardado el poder desarrollar un proyecto que cumpla con todas las características.

Para este tramo final que nos falta, yo estaré con toda esa disposición de seguir aprendiendo muchas cosas nuevas, de seguir esforzándome al máximo para poder cerrar este semestre con la mejor actitud.

De: Clases Para: Código

Antes de empezar a crear código es muy importante tener una idea muy clara sobre qué es lo que se va a elaborar. Es por esto que se han creado muchas herramientas que permiten una mejor visión sobre el trabajo que se va a estar desarrollando, y de este modo, entender lo que el cliente pide y lo que se requiere realizar. Es por esto que en este post estaremos explicando las formas correctas para leer y entender un diagrama.

Esta imagen es un ejemplo de un diagrama de clase, que es el que nos indica todas las clases con sus respectivos atributos y métodos, así de su relación que tiene con las otras clases.

Cada «recuadro» se divide en tres partes:

La parte superior siempre representará el nombre de la clase, y no puede contener otra cosa que no sea el nombre. Después sigue la parte de en medio, que esa división nos representa los atributos que tiene cada clase, que pueden ser inicializados con un signo, después continua el nombre y seguido de dos puntos se escribe el tipo de dato que es. Por último, la parte tres o inferior, contiene los métodos de cada clase, y de igual manera puede ser inicializado con un signo y seguido de los dos puntos, se escribe el tipo de dato que regresa.

Pero, ¿qué representan esos signos? Bueno, esos elementos, son conocidos como indicadores de acceso o modificadores de acceso, y nos indican el nivel de encapsulación tanto de un método como de un atributo, es decir, en función de dónde se puede acceder a ellos.

Los atributos más comunes son:

  • «+»: Que es público
  • «-«: Que es privado
  • «#»: Que es protegido
  • «~»: Que se puede acceder por default, es decir, desde cualquier clase en el mismo paquete
  • Estar subrayado: Que es estático

Ahora que ya sabemos cómo representar una clase y la manera en que determinamos los atributos y los métodos, es importante saber cómo se relacionan entre ellas. En el diagrama UML se expresa por medio de unas flechas, y a continuación entenderemos el significado de cada una.

Relación de asociación

Esta relación lo que hace es que describe una conexión entre objetos, y gráficamente se representa con una flecha que conecta las clases relacionadas.

La herencia es cuando una clase o subclase toma información de una clase padre, pudiendo acceder a sus métodos y atributos. Gráficamente se representa por medio de un triángulo blanco.

La agregación se refiere a una dependencia de un objeto y otro, sin embargo, puede existir uno sin el otro. Gráficamente se representa con un rombo blanco.

Es la dependencia de una clase con otra, pero con la condición de que una no puede existir sin la otra y solo se accede a ella a través del compuesto. Gráficamente es un rombo relleno.

La dependencia es la relación débil que existe entre dos clases. Gráficamente se representa por medio de una línea punteada.

Ahora que ya hemos explicado cómo leer un diagrama de UML, podemos pasar a la parte de crear el código. Esto se empieza leyendo cada «cuadro» en dónde lo primero es visualizar el nombre de la clase, con sus respectivos métodos y atributos, de este modo se crea lo más difícil que sería el diseño del código, y así ya se puede empezar a crear cada método y de esta manera podremos pasar de un diagrama a tener nuestro código ya muy avanzado si no es que terminado.

First Reflection

En el primer parcial de la materia de Análisis y Modelado de Software pude descubrir muchas cosas, aprendí que al iniciar un proyecto para desarrollar no se debe de empezar a hacer el código desde el principio, sino que existe toda una planeación previa que nos va a facilitar todo el proceso de programar. La mayoría de las veces nosotros queremos empezar a programar en cuanto tenemos la información del proyecto, porque estamos -malamente- acostumbrados a programar sin diseñar el proyecto antes, sin haber visto bien qué es lo que se nos está pidiendo.

Otro problema que suele ocurrir muy seguido, es una mala comunicación entre el cliente y el desarrollador. Esto pasa porque el cliente no sabe muy bien qué es lo que busca, o no se da a entender bien, y el desarrollador muchas veces hace lo que cree más conveniente o algo que no es lo que se le pide y esto lleva a muchos retrasos y enojos.

En este post haremos un repaso de cuáles fueron los temas abordados en el primer parcial.

Life Cycles

Los ciclos de vida de un software son el proceso para la creación o moderación de sistemas en la ingeniería de software. Estos modelos van desde los requerimientos hasta el final de la creación del sistema, en donde se le Eda un seguimiento constante y una vez terminado se le debe estar dando mantenimiento.

Estos son los pasos que se deben de seguir para crear un SDLC:

  • Análisis y planeación
  • Diseñar
  • Implementación
  • Pruebas
  • Evaluación y mantenimiento

Dependiendo de cuál es el enfoque que se le quiere dar al proyecto, se pueden utilizar distintos tipos de modelo, los más comunes y los que más se utilizan son los siguientes:

  • Modelo de cascada
  • Modelo de espiral
  • Modelo en V
  • Modelo ágil

Unified Software Process

El proceso unificado de software es un modelo de software que se unificó y se estandarizó, esto debido a que había una gran variedad de modelos.

Una parte muy importante y que se usa mucho para este modelo es el aspecto de los casos de uso. Estos sirven para que no existan errores de comunicación y se puedan detallar a fondo los requerimientos del usuario, en sus posibles escenarios y cuáles podrían ser sus soluciones. De este modo, se tiene un sistema eficiente para el usuario que no tenga fallas.

Hay algunas formas de utilizar el modelo unificado de software, y son:

  • Iterativo e incremental
  • Centrado en la arquitectura
  • Proceso Unificado de Rational (RUP)

Use Cases

Los casos de uso ayudan a identificar, clarificar y organizar los requerimientos de un sistemas. Esto hace que se puedan profundizar algunos aspectos como pueden ser los usuarios que interactúan con el sistema, las acciones que cada usuario tendrá que desarrollar y la relación que tiene cada caso de usuario con las anteriores.

De esta forma, se evitan errores por la mala comunicación, o por la complejidad del proyecto, o demás situaciones que puedan ocurrir y que al final terminen afectando y se cree un problema de tiempo y recursos.

Modeling Languages and Tools

Otras herramientas que son muy utilizadas en el medio son los lenguajes de software. Estos se utilizan para resolver diferentes problemas comunes que se tienen en al comunidad de desarrolladores. Existen varios lenguajes que ayudan a las demás personas con problemas parecidos, y generalmente son desarrollados por personas expertas y con experiencia en el tema, los más utilizados son:

Como podemos ver, es bastante importante el modelado de software. No todo el proyecto se basa en programar, sino que existe todo un mundo por detrás, en la parte de diseño de software que nos permitirán crear un proyecto de manera más práctica, eficiente y con mejor funcionalidad.

Ahora, de aquí en adelante estaremos viendo muchos más temas que nos van a permitir continuar aprendiendo más acerca del modelado de software, y se nos darán nuevas herramientas que serán útiles y seguramente nos facilitarán el trabajo.

Tengo muchas expectativas de el segundo parcial y estoy seguro que seguiremos aprendiendo muchas cosas nuevas que seguramente estaremos utilizando más adelante en nuestra carrera y en nuestras vidas laborales.

De: Clases Para: Tablas

Como vimos en mis post anteriores, es bastante importante el tener una buena organización para poder desarrollar un producto. Las herramientas que nos ayudan a conocer los requerimientos que utilizaremos son los diagramas.

Estos diagramas no solo se aplican para desarrollar software, también son muy utilizados en la creación de bases de datos funcional. Los diagramas nos van a ayudar a organizar la información de lo que el cliente pide y cómo la vamos a diseñar, de hecho, UML cuenta con un modelo llamado entidad-relación que es el principal al momento de desarrollar las bases de datos.

¿Qué es un modelo Entidad-Relación?

El modelo entidad-relación es un diagrama que representa cómo las entidades se relacionan entre sí dentro de un sistema. Se usan principalmente para diseñar bases de datos.

Los modelos emplean una serie de símbolos para representar la estructura que tendrá la base. Estos símbolos pueden ser rectángulos, círculos, líneas de conexión, entre otros, y muestran la relación que tiene cada entidad.

Creación de tablas

Una vez que se ha creado el Modelo ER, ya podemos diseñar las tablas que tendrá nuestra base de datos. Hay que mencionar que el diseño puede cambiar conforme el proceso vaya avanzando, y no necesariamente quedará igual al modelo original, esto porque se pueden encontrar algunas situaciones o el cliente cambiar de idea o casos no previstos, sin embargo es muy importante ir actualizando el modelo con cada cambio que se le hace a las tablas.

Paso 1

Para cada entidad fuerte que exista en el modelo, se tiene que crear una tabla con todos los atributos. También es importante escoger uno de los atributos, generalmente un atributo único, para que sea la llave primaria de la tabla.

Paso 2

Para cada entidad débil se crea otra tabla relacionan donde se incluyen los atributos de la llave primaria de la tabla padre y se agregan las llaves primarias y llave parcial de la nueva tabla

Paso 3

Por cada relación de tipo 1 a 1 se identifican las relaciones de las entidades participantes y se escoge una de las relaciones que contienen las llave primaria de una tabla con la llave foránea de otra.

Paso 4

Por cada relación binaria de 1 a muchos, se identifica la relación del lado de muchos y se incluye como llave primaria la llave foránea del lado 1.

Paso 5

Para cada relación que sea de muchos a muchos, se debe crear una nueva tabla para representar la relación. Se crea las llaves primarias a partir de las originales y esto genera las llaves foráneas de las relaciones 1 a muchos, del lado de muchos.

Paso 6

Para cada atributo multivaluado se crea una nueva tabla donde la llave primaria es la composición de la llave primaria y el atributo correspondientes.

Paso 7

Para cada relación n-aria se crea una nueva tabla para representar esta relación y se deben de incluir como atributos secundarios las llaves primarias de las relaciones participantes. Por lo general las llaves primarias son las combinación de todas las llaves foráneas de las relaciones participantes.

Es importante recalcar, que aunque estos son los pasos generales, no quiere decir que cada que se crea un modelo Entidad-Relación se debe elaborar tal cuál dice este proceso, se puede cambiar en algunas ocasiones dependiendo de las situaciones que se presentan a lo largo de la elaboración, sin embargo, sí nos dan una gran ayuda conocer estos pasos y son muy sencillos de entender y de llevar a cabo.

También es bueno tener en consideración que cada tipo de base de datos es diferente, ya que hay algunas que trabajan con una estructura que nada que ver a este tipo de diagramas, pero aún así para la mayoría de los casos, como es SQL sí se aplica de este modo.

Más de UML

Como se vio en mi post anterior, UML es un lenguaje gráfico que nos permite crear un software de manera más sencilla, ya que cuenta con varias herramientas que son muy sencillas de utilizar y muy prácticas, porque nos permite ver el diseño desde otra perspectiva.

En el mismo post, se habló sobre tres diagramas diferentes:

  • Diagramas secuenciales
  • Diagramas de clase
  • Diagramas de objetos

En esta segunda parte del blog de UML, continuaré con ciertos diagramas que faltaron en el pasado, que son el diagrama de estado, diagramas de paquetes y diagramas de componentes.

Diagramas de Estado

Este diagrama muestra transiciones entre varios objetos., y están relacionados con las máquinas de estado. Estados se refiere a las diferentes combinaciones de información que un objeto puede mantener, es decir, para ver todas las posibles formas que puede tener un objeto y como llegar a ese estado se aplica un diagrama de estados.


Los diagramas de estado representan principalmente estados y transiciones. Los estados se representan con rectángulos de esquinas redondeadas que se etiquetan con el nombre del estado. Las transiciones se marcan con flechas que fluyen de un estado a otro, mostrando cómo cambian los estados.

Diagramas de paquetes

Estos diagramas nos permiten separar y organizar nuestros otros diagramas (clase, estado, casos de uso, etc). Ya que al tener un proyecto se tiene que contar con varias acciones y muchas veces se pueden perder entre tantas cosas que tenemos que hacer. Entonces, se crea un diagramas de paquetes que nos ayuda a «acomodar» por separado cada proyecto y nos permite verlos de uno por uno y también saber quién o quiénes van a ser los encargados de llevarlo a cabo. Estos diagramas tienen la finalidad de hacer que cada proyecto sea lo más independiente posible.

Diagramas de componentes

El diagrama de componentes es muy parecido al diagrama de paquetes. Estos también separan el proyecto pero en componentes, en lugar de paquetes.

El objetivo de estos diagramas es mostrar la relación que existe entre los componentes de un sistema. Un componente se refiere a un sistema o subsistema independiente que puede interactuar con el resto.

Estos diagramas pudieran parecer difíciles de comprender al principio, sin embargo, no es así, además que son una parte demasiado importante a la hora de desarrollar el sistema, ya que nos pueden ayudar a:

  • Imaginar cómo va a ser la estructura del sistema
  • Visualizar los componentes del sistema y cómo se relacionan
  • Enfocarnos en el comportamiento del sistema y su relación con la interfaz.

Para finalizar, después de haber conocido estos tipos de diagramas, nos podemos dar cuenta que existen diferentes tipos de modelos en UML, y cada uno es diferente y tiene un objetivo distinto, dependiendo de qué es lo que se busca con nuestro software o en la etapa que nos encontremos.

Esto nos deja ver muy en claro que es fundamental el utilizar diagramas a la hora de planear un nuevo proyecto, ya que sin estos nos será muy difícil lograr desarrollar un producto que cumpla con todas las características. Actualmente existen muchas herramientas que nos ayudan a comprender cómo funcionan y que nos ayudan a crear estos diagramas.

UML 1

Como he mencionado en post anteriores, la parte del diseño de software es muy importante para poder crear un proyecto correctamente. Existen muchísimas herramientas que nos ayudan a desarrollar correctamente nuestra planeación de software, hay de varios tipos dependiendo de qué es lo que queramos crear. Sin embargo, la herramienta más popular actualmente y la más utilizada es sin duda alguna el UML.

El Lenguaje unificado de Modelado (Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema, para especificar o para describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo.

UML ha hecho que se «unifique» el proceso de elegir herramientas para diseñar software, ya que al existir tantas opciones, lo que pasaba es que cada desarrollador elegía el que más le parecía y a veces causaba problemas para compartir los programas.

Esta unificación se debe a los beneficios que incluye UML, como pueden ser los diagramas para poder definir los proyectos y las acciones que se van a realizar. Además, estos diagramas son bastante sencillos de crear y de entender, por lo que esto ha hecho que tengan aún más impacto, además de la ventaja de que se pueden crear varios diagramas para un solo proyecto.

A continuación se presentarán tres diagramas muy populares en el proceso de UML:

Diagramas Secuenciales

Estos diagramas se centran en la relación y la acción de cada objeto de los sistemas, siguiendo un orden para explicar la funcionalidad y el proceso que sigue un sistema. Esto facilita el entendimiento del programa y hace más entendible leerlo por si se requiere hacer alguna modificación a futuro, esto debido a que es muy fácil de ver detalladamente el proceso.

Diagramas Secuenciales

Diagramas de Clase

Los diagramas de clase son de los más útiles al utilizar UML, esto porque traza claramente la estructura del sistema, con sus clases y atributos, además de las relaciones que existen entre los objetos. Los diagramas deben ser entendibles por todos los desarrolladores del proyecto y así poder garantizar que se divida en partes.

Algunos beneficios de utilizar estos modelos son:

  • Ilustrar los modelos de datos de información.
  • Comprender la visión general de los esquemas.
  • Crear diagramas detallados.
  • Ofrecer una descripción independiente de la implementación del sistema.

Diagramas de objetos

Estos diagramas representan una parte específica de un modelo de clase, de hecho es un poco común que se puedan llegar a confundir. Aunque cada uno es diferente ya que el modelo de clase representa solo la clase del objeto, y en estos diagramas ya se pueden ver más a fondo todos los detalles de cada uno de estos, y es de esta manera cómo se diferencian. Un diagrama de objetos se enfoca en los atributos de un conjunto de objetos y cómo esos objetos se relacionan entre sí.

El modelo UML es sumamente importante y amplio de explicar, es por eso que este tema se divide en dos post, para poder explicar todo de una manera más específica. Es el modelo más importante para representar información y su utilidad de diagramas lo vuelve el más utilizado hoy en día en el medio de desarrollo de software.

Design Patterns

En la vida estamos rodeados de patrones. No hay lugar al que vayamos que no observemos algún patrón de la naturaleza, o algún patrón que se utilizó para cierta construcción. En nuestras vidas los patrones nos rodean, y en el desarrollo de software no es la excepción.

Cuando se está desarrollando un software y se tiene un problema, seguramente ese problema o alguno similar ya lo han sufrido muchos desarrolladores antes. Es por eso es que se han creado los patrones de diseño.

Estos se refieren a la estructura de las clases de un problema, son soluciones comunes que se pueden extraer y utilizar para resolver problemas similares.

Las ventajas de utilizar patrones de diseño son:

  • Ahorrar tiempo
  • Seguro en la validez del código
  • Lenguaje común

A continuación explicaré los patrones de diseño más comunes.

Patrones de diseño creacionales

Estos son los que facilitan la creación de objetos nuevos, de manera que se desacoplen de la implementación del resto del programa.
Se basa en dos conceptos:

  1. Trabajar con interfaces, por lo que la implementación concreta que utilicemos queda aislada.
  2. Ocultar cómo estas implementaciones concretas necesitan ser creadas y cómo se combinan entre sí.

Los patrones creacionales más conocidos son:

  • Abstract factory
  • Factory Method
  • Builder
  • Singleton
  • Prototype
Patrón de diseño Creacional

Patrones estructurales

Son patrones que nos facilitan la modelización de nuestros software especificando la forma en la que unas clases se relacionan con otras. Trata de crear partes pequeñas de un sistema y que con estas se pueda ir creando un sistema más completo al final.

Los patrones estructurales más conocidos son:

  • Adaptador
  • Puente
  • Composición
  • Decorador
  • Fachada
  • Proxy

Patrones de comportamiento

Se usan para gestionar algoritmos, relaciones y responsabilidades entre objetos. Una forma de esto es que cada objeto tenga su propia responsabilidad y no se repita entre objetos, para así poder agregar un paso entre dos de estos

Los patrones de comportamiento más comunes son:

  • Comando
  • Cadena de responsabilidades
  • Interpretador
  • Iterador
  • Mediador
  • Observador
  • Visitante
  • Estrategia

En conclusión, estos patrones de diseño nos facilitan la manera en que creamos nuestro software, simplificando así el trabajo con estructuras ya creadas y que nos ayudan a darnos una idea de cómo solucionar los problemas que se nos presentan. Estos también evitan que se tengan que crear los proyectos desde cero, lo más difícil de todo es saber cuándo usarlos y saber cuál usar.

Lenguaje de Modelado de Software

El desarrollo de software es un proceso muy importante para poder crear un proyecto bien elaborado. Pero este es muy complejo que no es posible realizarlo todo como nosotros lo queramos. Es por eso, que han creado herramientas o lenguajes para poder facilitar su entendimiento y mejorar la calidad del producto final.

El que existan distintos lenguajes de modelado facilita la creación y desarrollo del software, pero es que existen tantos tipos de proyectos y sistemas con diferentes propósitos que se han tenido que dividir en muchas categorías. Aquí hablaré de algunas de ellas.

  • Modelado de Objetos

Como su nombre lo dice, este se basa en el desarrollo de software orientado a objetos. Se trata de que cada parte del programa sea representado por un objeto independiente con sus atributos y métodos. El ejemplo más conocido es el modelo UML, que te permite visualizar la relación que hay entre los objetos con sus acciones aplicadas.

  • Modelado de Datos

Estos modelos surgieron debido a que la tecnología incrementó de manera muy rápida y así se iban creando más y más datos en todo el mundo, que eran prácticamente imposibles de organizar. Es por esto que se crea este modelo y así se facilitó el trabajo para poder buscar, ordenar, y trabajar con estos datos, de acuerdo a ciertos criterios que el usuario puede decidir. Un ejemplo de esto es CQL que te permite crear bases de datos con diferentes tablas para así tener la información de manera más organizada.

Así, yo creo que estas herramientas son indispensables para poder crear un buen software con todo lo requerido. Nos ayudan a tener una mejor planeación, y a ver desde otra perspectiva más simple el cómo funcionaría nuestro proyecto y por ende, nos facilita un poco el trabajo. Yo por lo general en la que más pienso es en UML ya que es el más conocido, sin embargo, hay muchas otras herramientas y lenguajes que nos pueden ayudar a mejorar nuestro software de acuerdo a qué sea lo que necesitamos.

Usar los casos de uso

La mayoría de las veces cuando se está desarrollando un sistema y hay problemas se debe a que no hubo una buena comunicación entre el cliente y el desarrollador. Esto debido a que el cliente no se explicó bien, o el desarrollador entendió algo muy diferente, o porque muchas veces los clientes no saben con exactitud qué es lo que ellos quieren para su producto. Es por eso que se implementó la utilización de los casos de uso.

Los casos de uso ayudan a identificar, clarificar y organizar los requerimientos de un sistemas. Esto hace que se puedan profundizar algunos aspectos como pueden ser los usuarios que interactúan con el sistema, las acciones que cada usuario tendrá que desarrollar y la relación que tiene cada caso de usuario con las anteriores.

Los casos de usuario son tan utilizados que se implementaron diagramas que explican cómo funcionan estos. Tienen su significado y es fácil ver la relación que van a tener con los demás y qué es lo que cada quién va a realizar.

Diseña un sitio como este con WordPress.com
Comenzar