Desarrollo de aplicaciones en Python – Introducción

Desarrollo de aplicaciones en pythonBienvenidos a desarrollo de aplicaciones en Python. En este primer post vamos a ver una introducción al desarrollo.

Considero que si has terminado el módulo de programación estructurada y el segundo módulo de programación orientada a objetos en Python estás listo para dar este gran paso!.

En este post introductorio vamos a ver que software vamos a necesitar así como también que conocimientos son necesarios para desarrollar aplicaciones a un nivel «profesional» y como he acordado con mis suscriptores vía email vamos a seguir un orden de aprendizaje.

 

Ya que como muchos han mencionado al terminar el módulo 2 : Programación orientada a objetos o «Clases» como alguno le llama, no saben por donde continuar sin encontrar que existen vacíos de conocimientos que aún no tienen. Para ello, iré escribiendo post y tratando de ordenar e incluir los anteriormente redactados en el tercer modulo llamado «Desarrollo«.

Así que ahora puedes seguir el orden del tercer módulo tranquilamente!. Y espero poder hacer un post diario o cada dos días para evitar atrasarme y ya ir culminando un poco con esta tercera fase que se ha complicado bastante…

¿Qué vamos a aprender en este tercer módulo?

Primeramente decidí que lo más importante será aprender a organizar un proyecto para poder llevar a cabo algunos proyectos básicos utilizando el lenguaje de programación Python y de mientras iremos introduciendo nuevos conocimientos como bases de datos y frameworks de desarrollo entre otros, para llegar a desarrollar aplicaciones web y de escritorio / móvil con éxito.

Entonces podemos definirlo así:

Objetivo principal del tercer módulo: Que puedas desarrollar exitosamente aplicaciones web, de escritorio y móvil con Python.

  1. Aprender que es un proyecto, como se organiza y mantiene. (Modelo MVC)
  2. Conocer el software necesario y las ventajas que este nos ofrece al momento de desarrollar aplicaciones.
  3. Teoría acerca del desarrollo de software, control de versiones y actualizaciones. (Aprenderemos GIT / Github)
  4. Aprender bases de datos relacionales y no relacionales con Python.
  5. Desarrollar un proyecto donde hagamos uso de estos conocimientos.
  6. Aprender diseño web responsive (HTML + CSS) y el uso de diversos frameworks útiles para este fin.
  7. Aprender a crear nuestra primer aplicación web utilizando el framework Flask.
  8. Aprender a utilizar librerías en nuestras aplicaciones con Flask y desarrollar diversas aplicaciones como ejercicio.
  9. Aprender a desarrollar aplicaciones de escritorio utilizando Pyqt5 y Tkinter.
  10. Probablemente a partir de aquí valla teniendo nuevas ideas.. jeje.

Como ves es una chorrera de cosas y no será fácil aprender todo esto. Pero como ya lo saben mis lectores buscaré la forma de hacerlo lo más sencillo posible, entretenido y «paso a paso» para aquellos que recién aprenden a programar. Tranquis, que van a poder completarlo sin mayor dificultad!.

Una introducción es en vano si no aprendes algo en ella, así que venga!. Vamos a aprender algo:

¿Qué es un proyecto?

Hablas de proyectos, pero.. ¿Sabes lo que es un proyecto?

Un proyecto puede verse como una representación de la materialización de una idea. Una idea es un proyecto hasta que se realiza.

Podemos decir entonces que un proyecto en una etapa inicial: es un conjunto de detalles sobre los medios o recursos necesarios, el modo en que se llevará a cabo y los pasos a seguir para materializar una idea. Podemos hablar de obras, de construcciones, etc. Pero cuando hablamos de Software la cosa cambia un poquillo, un poquillo bastante.

Fases de un proyecto de desarrollo de software

Proyecto red socialImaginemos que Pepe aprendió recientemente a programar en Python, me pide ayuda y desea como primer proyecto crear «una red social«. Eres ambicioso Pepe, muy ambicioso jodido Pepe!

Pepe no sabe, en la que se ha metido!!. Antes de realizar un proyecto como este debe tener en cuenta muchos requisitos y etapas que deberá ir superando para convertir esta simple y banal idea en un verdadero proyecto de desarrollo de software y ni hablemos de llevarlo a cabo, de llegar al punto de tener una red social funcionando!.

-Pero, entonces Mariano…¿No me vas a enseñar a desarrollar una Red Social en Python?

-Qué si, Pepe, que si!. A su debido tiempo!

-Se va a llamar mmm… FACEBUM

Las etapas para llevar adelante un proyecto de software son las siguientes:

Análisis de sistemas y requisitos de software / hardware:

Primero lo primero, hay que conocer los requisitos necesarios para comenzar a desarrollar nuestro proyecto (puede ser por ejemplo «una red social»). Entre estos requisitos encontramos las herramientas necesarias para el desarrollo que serán nuestras herramientas particulares. ¿De qué herramientas de software y hardware dispongo como desarrollador?. Y claro, ¿pensabas programar una red social en un Pentium usando el bloc de notas?. Independientemente de cual sea el proyecto es momento de pensar como un desarrollador y necesitaremos primero (algo obvio):

  • Un entorno de desarrollo: Ya hablamos de esto, pero venga va. Un entorno de desarrollo o también llamado IDE es un conjunto de procedimientos y herramientas que se utilizarán para desarrollar el código fuente de nuestra aplicación. Obviamente para elegir bien nuestro entorno de desarrollo (en el caso de ser Integrado (IDE)) debemos conocer bien el lenguaje de programación en el que desarrollaremos nuestra aplicación. O bien podemos usar un editor genérico que nos permita adaptarnos al lenguaje o «los» lenguajes que utilicemos. Porque no vas a utilizar uno solo.. Y aquí es donde considero importante elegir e instalar un editor como Visual Studio Code que veremos más adelante y que viene a reemplazar a nuestro Geany que estábamos utilizando tradicionalmente. Pero, ¿y si no lo quiero cambiar o mi pc no dispone del hardware necesario para tirar uno de estos editores?. Pues, tendrás que hacerlo en Geany, la diferencia estará en las facilidades que este editor brinda y que al menos yo intentaré no privarme de ellas.. Dentro de nuestro entorno también se encuentra la necesidad de contar con un servidor donde realizar pruebas, ya sea un servidor local o uno externo que nos permita realizar pruebas como si de un servidor real se tratase; este se llama Servidor de integración; y finalmente tendremos nuestro servidor donde subir la aplicación cuando esté terminada llamado Servidor de Producción. Pero tranqui.. Aprenderás a montar un servidor local cuando lo necesitemos!

Visual studio code

  • Un Gestor de versiones y un entorno virtual: Si vienes siguiéndome probablemente ya te sonarán estas palabras, sino, intentaré explicarte brevemente porque son tan importantes. Un gestor de versiones nos permitirá ir creando «capturas» de nuestro código fuente donde podremos asignarle diferentes versiones a medida que vallamos avanzando. Esto nos creará una linea temporal de nuestro proyecto donde podremos ver algo así como un «historial» del desarrollo del código, y podremos volver atrás en el tiempo en caso de arruinar algo, o «perdernos» en nuestro propio proyecto. Podremos ver con fecha y hora que cambios hemos realizado así como también nos permitirá que otro desarrollador pueda realizar cambios en nuestro código mediante la creación de un «repositorio de código». Y no solo eso, en caso que tu ordenador explotara y solo pudieras salvar tu propia vida, bastaría con ir al ciber más cercano y descargar este repositorio para seguir trabajando (nos otorga seguridad). Ya no tienes excusa Pepe!. Y también utilizaremos un Entorno virtual [virtual environment] que sería como crear una carpeta dentro de nuestra aplicación donde se instalarán APARTE de nuestro sistema operativo las librerías necesarias para la ejecución de nuestra aplicación en la versión que nosotros elijamos. Supongamos que nuestra red social usará la librería PILLOW que sirve para trabajar con imágenes en Python, una vez instalada esta librería en nuestro entorno virtual nos aseguramos de que si actualizamos nuestro sistema esta librería no se actualice en nuestro proyecto. Y a su vez nos asegura que en caso de una actualización de librerías nuestro proyecto no se «rompa» porque ya las ha copiado y encapsulado en una carpeta a distribuir con nuestro proyecto. Más adelante explicaremos bien detenidamente y haremos uso de estas herramientas.

 

  • Requisitos del producto de software a desarrollar: Muy vacan la idea de la red social, pero ¿Qué requisitos tiene una red social?. Pensemos por un momento que una red social necesita primeramente muchísimo almacenamiento y transferencia disponible. Claro, estos son recursos escalables (a más necesito más pago) por lo que no debería preocuparnos tanto, pero deberemos de antemano planificar un consumo mínimo y máximo para que no nos tome por desprevenidos a las 2am de que nos hemos quedado sin espacio en el servidor para alojar una selfie de algún usuario. Y ¿cómo vamos a gestionar el almacenamiento y las cargas al servidor?. [Aclaro para los desarrolladores de software expertos que estoy tratando de explicar por encima estas fases a lectores sin conocimientos, porque en realidad lo que me interesaba era el entorno de desarrollo]. A partir de aquí debemos plasmar «en el caso de un proyecto como este» los requisitos en un documento que se llamará ERS (Especificación de requisitos del sistema) y que nos dirá a nosotros y a otros desarrolladores que diablos necesitamos para llevar a cabo este proyecto.

Diseño y arquitectura de Software:

Si vamos a desarrollar aplicaciones en python recordarás haber visto en alguna de mis entradas (más específicamente en la última acerca de fundamentos) algunos diagramas ya sea de Pseudocódigo o Diagramas de flujo. Pues en esta etapa debemos diagramar y establecer una arquitectura acerca de como funcionará nuestro software y tener en cuenta diversos requisitos de diseño también como por ejemplo; ¿Cómo se verá el perfil de una persona registrada en nuestra red social?¿Qué datos se le solicitarán obligatoriamente para el registro?, entre otras cosas. A partir de aquí explico las etapas por encima para ir terminando con la idea principal. También se define que tipo de base de datos vamos a utilizar o si vamos a utilizar ambos tipos para diferentes necesidades, etc.

Programación e implementación:

En esta etapa nos dedicamos a programar nuestro software con todos los contratiempos que eso conlleve y cumpliendo con los requisitos necesarios para lograr implementar el software y realizar las debidas pruebas. En esta etapa vamos a programar «módulos» ya que luego explicaré bien, nuestra aplicación debe ser «modular y escalable» lo que habremos definido en la etapa de diseño y arquitectura por ejemplo. De esta manera tendremos organizada nuestra app en diferentes partes que deberán funcionar por separado y también de forma integrada. Por ejemplo; podemos tener el módulo «login (acceso de usuarios)» que debe funcionar aparte del registro; por ejemplo.

Mantenimiento, documentación y diseño de usabilidad:

Resumí estas tres etapas en una porque en realidad ya explique lo que más me interesaba. Pero la siguientes etapas consisten en programar un mantenimiento diario de nuestra aplicación y redactar una documentación (algo que considero es mejor ir redactando a medida se avanza con nuestro proyecto) la cual nos servirá en un futuro como desarrolladores de aplicaciones en python a la hora de querer realizar modificaciones en el código o si queremos comercializarlo, etc. Y también en una etapa final tratar el diseño de nuestra aplicación para mejorar la interacción del usuario con ella. Obviamente, entre más bonita pero también más práctica y sencilla de utilizar sea, pues mejor.

 

Resumen de desarrollo de aplicaciones en python

En nuestro tercer módulo aprenderemos desarrollo de aplicaciones en Python fuera de una simple consola. Aprenderemos a crear aplicaciones web’s como es debido siguiendo un patrón llamado Modelo-Vista-Controlador y utilizando las herramientas que usan los desarrolladores profesionales.

Es importante que a partir de ahora logres asimilar 3 cosas:

  • Ya no vas a crear códigos al aire en archivos «.py»; vas a crear proyectos de software.
  • Vas a utilizar librerías y aprenderás a leer su documentación
  • Vas a aprender a usar un Gestor de versiones (GIT) te guste o no.
  • Vas a usar un entorno virtual en tus proyectos de software.

Y.. ¿Por qué?

-Porque de lo contrario nunca serás un desarrollador, serás un novato que «apenas aprendió algo de Python». Nunca podrás completar un proyecto grande e importante, nunca podrás conseguir trabajo como desarrollador ni mucho menos llegar a ser un freelancer. Si no puedes administrar correctamente tus proyectos y trabajar con otros desarrolladores.

Yo me encargo de explicártelo, para que lo entiendas. Tu solo dedica tus esfuerzos a aprender!

Vete al chat!Así que venga manos a la obra, te veo en la siguiente lección donde aprenderemos a instalar Visual Studio Code.

Ha y si tienes dudas, ahora hay un chat disponible donde puedes chatear «directamente» conmigo o con otros desarrolladores o lectores del blog que a lo mejor tienen la solución a tus dudas. Capisci??

Y sino como siempre, a través de la página contacto me envías un email. Obviamente prefiero el chat, más entretenido 😛

 

Abrazos y éxitos!

 

 


 

 

Continúa leyendo!
Entrada anterior! Siguiente entrada!

Compartir es agradecer! :)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.