Desarrollo Web

Desarrollo de Software

Secuencia de actividades que realiza un equipo de desarrolladores para generar un conjunto coherente de productos.

El desarrollo de software se refiere al proceso de creación de productos digitales como aplicaciones, páginas web, servicios web, aplicaciones móviles, entre otros. El desarrollo de software no se limita a la programación de un sistema, sino que implica trabajo relacionado con el análisis, planeación, implementación, pruebas, despliegue y mantenimiento de un sistema.

Programación

Organizar una secuencia de pasos ordenados a seguir para hacer cierta cosa.

La programación en informática se refiere a la creación de programas o aplicaciones, implementando una serie de algoritmos descritos en un código fuente de algún lenguaje de programación para llegar a la solución de un problema

Lenguajes de Programación

Un lenguaje de programación es un lenguaje formal que mediante una serie de instrucciones permite ejecutar un conjunto de órdenes, acciones consecutivas, datos y algoritmos que controlen el comportamiento físico y lógico de una máquina.

Lenguajes Interpretados

  • Javascript
  • Python
  • Ruby
  • PHP

Lenguajes Compilados

  • Go
  • Rust
  • C#
  • *Java**

Desarrollo Web

El desarrollo web se refiere a la creación de software que se ejecuta en la web y donde los usuarios lo pueden utilizar accediendo a un servidor web a través de un navegador.

Existen diferentes tipos de software en la web:

  • Páginas Estáticas: Son páginas generalmente creadas solamente en HTML y CSS, con algunas funcionalidades en Javascript, las páginas estáticas son aquellas donde toda la información que se muestra en pantalla está escrita en el código.
  • Páginas Dinámicas: Este tipo de páginas son aquellas que almacenan su información en una base de datos y requieren una forma de acceder a dichos datos, ya sea a través de un panel (CMS) o de aplicaciones de servidor (Web Servers)

Untitled.png

  • Sitio Web: Un sitio web es el conjunto de diferentes páginas web.

  • Portal Web: Un portal web es un sitio web donde su tipo de contenido es dinámico, sus páginas incluyen foros, chats, correo electrónico, buscadores, zona de acceso con registro, actualizaciones periódicas, etc.

  • Aplicaciones Web: Las aplicaciones web tienen un nivel más elevado de interacción con el usuario, este tipo de páginas ejecutan servicios en línea que buscan resolver un problema o permitir al usuario ejecutar distintas tareas.

    Las aplicaciones web utilizan por lo general tecnologías especializadas para procesar información y devolver resultados al consumidor de internet, por lo que no solamente tienen acceso a una base de datos, sino que requiere una aplicación de servidor para ejecutar una lógica de negocio.

  • Servidor Web: Es un programa que está diseñado para transferir hipertextos, páginas web o páginas HTML (HyperText Markup Language).

  • Servicio Web: O aplicación se servidor, es el software que se encarga de intercambiar datos entre aplicaciones, este se encarga de procesas una lógica de negocio.

    • Micro-servicio: Se refiere a un concepto dentro de una “arquitectura de microservicios”, Se tratan de una serie de pequeños servicios web, cada uno ejecutándose de forma autónoma y comunicándose entre sí.

Client-Server.png

  • Computación en la Nube: Se refiere al ****acceso e implementación de recursos virtuales de computación, red y almacenamiento que están disponibles en línea a través de un proveedor remoto.
    • Aplicación como Servicio (SaaS) es una oferta de computación en nube que proporciona a los usuarios acceso a un software con base en la nube de un proveedor.
    • Plataforma como servicio (PaaS) es un entorno de desarrollo e implementación completo en la nube, con recursos que permiten entregar todo, desde aplicaciones sencillas basadas en la nube hasta aplicaciones empresariales sofisticadas habilitadas para la nube. Usted le compra los recursos que necesita a un proveedor de servicios en la nube, a los que accede a través de una conexión segura a Internet, pero solo paga por el uso que hace de ellos.
    • Infraestructura como servicio (IaaS) es una infraestructura informática instantánea, aprovisionada y administrada a través de Internet.

Roles

Dado que el desarrollo de aplicaciones web tiene un alto grado de complejidad, el proceso de desarrollo se suele distribuir entre diferentes roles que atienden a una necesidad específica.

  • Analista de Requerimientos: Es el responsable de entender las necesidades del cliente, y asegurarse de que la solución que está siendo desarrollada se ajusta a esas necesidades.
  • Arquitecto de Software: Se encarga de definir la arquitectura global de una aplicación, define los diferentes módulos que deben existir así como la forma en la que será abordado el desarrollo para suplir las necesidades del cliente asegurando la calidad del producto.
  • Diseñador (UI/UX): Es el encargado de diseñar el producto, tanto sus interfaces como la interacción del usuario.
  • Maquetador: Es el encargado de pasar los mockups que se han diseñado y llevarlos a código HTML y CSS, tal vez tenga que usar Javascript para algún un efecto que no pueda lograrse con CSS.
  • Desarrollador Frontend: Es el encargado de desarrollar toda la lógica del lado del cliente, esto es, codificar el flujo de interacción del usuario con la aplicación, así como la validación y comunicación de datos tanto con el usuario como con el servidor.
  • Desarrollador Backend: Se encarga de desarrollar la lógica de negocio del lado del servidor, se encarga de desarrollar el procesamiento y comunicación de datos entre la base de datos y el cliente.
  • Administrador de Bases de Datos: Es el encargado de diseñar, construir y mantener la base de datos de un sistema, debe encargarse de la integridad de la información, la seguridad y desempeño de la base de datos.
  • QA *Tester:* Se encarga ****de asegurar la calidad de un producto, así como de los procesos de desarrollo, también es el responsable del diseño y la ejecución integral de pruebas al sistema.
  • Líder de Devops: Se encarga de ejecutar y automatizar los procesos existentes entre el desarrollo y el despliegue de una aplicación, utilizando herramientas de Integración Continua (CI) y despliegue continuo (CD)

Tecnologías Web

Entre las diferentes teconologías existentes para el desarrollo web, se encuentran:

Front End

  • HTML: Pug, jekyll, jinja
  • CSS: Sass, less.
  • Javascript:
    • Reactjs
    • Angular
    • Vue

Back End

  • Javascript: nodejs, Express
  • Python: Django, Flask
  • Ruby: Ruby on Rails
  • PHP: Laravel, Sinfony
  • C#: .net
  • java: springboot

Bases de Datos

  • Relacionales
  • No SQL
    • Clave-valor
    • Columnas
    • Documentos
    • Gráficas

Proceso de Desarrollo de Software

Proceso en el cual se divide el trabajo de desarrollo del software en distintas etapas para la gestión de proyecto. Es también conocido como el ciclo de vida del desarrollo de software.

Untitled1.png

Metodología Cascada

kisspng-systems-development-life-cycle-software-developmen-5c88754d3981c0.4402955815524467972356.png

Ciclo de desarrollo de Software

Untitled2.png

Untitled3.png

Desarrollo Ágil de Software

Se refiere a métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requisitos y soluciones evolucionan con el tiempo según la necesidad del proyecto.

Untitled4.png

Manifesto

https://agilemanifesto.org/iso/es/manifesto.html

Untitled5.png

Principios

Untitled6.png

Principios del Manifiesto Ágil

Metodologías Ágiles

Permiten adaptar la forma de trabajo a las condiciones del proyecto, consiguiendo flexibilidad e inmediatez en la respuesta para amoldar el proyecto y su desarrollo a las circunstancias específicas del entorno.

Kanban

Untitled7.png

Untitled8.png

Untitled9.png

31 Ejemplos Prácticos de Tableros Kanban | Kanbanize

Kanban aplicado al desarrollo de software

Qué es Kanban: Fundamentos | Kanbanize

Scrum

Es un marco de gestión de proyectos que pone más énfasis en el progreso iterativo, el trabajo en equipo y la responsabilidad.

Untitled10.png

Untitled11.png

Roles

  • Product Owner
  • Equipo de desarrollo
  • Scrum Master

Artefactos

  • Sprint
  • Product Backlog
  • Sprint Backlog
  • Incremento

Eventos

  • Sprint Planning
  • Sprint Goal
  • Daily Scrum
  • Sprint Review
  • Sprint retrospective

DevOps

Development + Operations, Es una metodología de desarrollo de software centrada en la comunicación, colaboración e integración entre desarrolladores de software y los profesionales de sistemas en las tecnologías de la información (IT)

Su objetivo es ayudar a una organización a producir productos y servicios software más rápidamente, de mejor calidad y a un coste menor, integrando y automatizando los diferentes procesos en el desarrollo de software.

Untitled12.png