¿Qué son los frameworks, API, bibliotecas, MVC, MVVM y arquitecturas en Ingeniería de Software?

Los marcos son como componentes de software prefabricados que a menudo sirven para ayudarlo a construir algo rápidamente sin reinventar la rueda. La analogía con esta sería si quisieras construir una casa, no harías tus propios ladrillos, sino que preferirías comprarlos en la tienda y comenzar a construir con ellos.

API : son interfaces de programación de aplicaciones. Cuando una compañía de software construye un software, a menudo quieren “ocultar” una implementación real de cómo funciona algo internamente, pero quieren “exponer” partes y partes de su sistema, para que pueda usarlo en su proyecto de software. El ejemplo sería el desarrollo de iOS. No ves el kernel de Apple o el código interno de iOS. Pero tiene las API que usa para “comunicarse” con el sistema subyacente y escribir software para ello sin preocuparse de cómo funciona en segundo plano. Ya lo han hecho los ingenieros de Apple de forma gratuita.

MVC y MVVM: significa Modelo, Vista, Controlador y Modelo, Vista, Modelo de vista. En esencia, esto sería lo mismo, y estas son básicamente metodologías que se utilizan para separar las diferentes lógicas de programación entre sí. Imagínese hace 15 años, cuando PHP estaba ganando popularidad, tendría un archivo HTML, espolvoreado con código PHP por todas partes -> Conexiones de bases de datos, enlaces dinámicos, etc.

MVC le permite separar esta lógica en componentes más pequeños y ganar productividad. Modelo (cosa del mundo real que desea representar: ser humano, válvula de presión, tren, y lo que sea), Ver (lo que ve el usuario final) y Controlador (el controlador habla con el modelo y envía los datos para mostrarlos en Ver).

¿Cómo trabajan todos juntos? Bueno, el software es un trabajo complejo. Imagínate a ti mismo como un Miguel Ángel que intenta construir una hermosa escultura a partir de la pieza de piedra.

La gente no verá el proceso detrás de esto, pero sí verá el producto final.

Todas estas son herramientas desarrolladas por personas que escriben software a diario, y que desean facilitar la escritura del software para ellos y para quienes los siguen.

Como dije al principio, cuando comiences a construir tu casa, harás un plan, comprarás todo lo necesario y usarás herramientas para construir una casa.

Eso es lo mismo con todos estos términos mencionados. Son solo herramientas diferentes a su disposición.

Entonces, has preguntado muchos conceptos, así que responderé los básicos y proporcionaré (tanto como sea posible) enlaces para otros:

  1. Marcos: si eres un programador / programador y has trabajado en un proyecto, entiendes que un proyecto requiere la traducción de un requisito humano en código. Siendo demasiado breve para decirlo, un proyecto suele ser una compilación de diferentes tipos de recursos. El proyecto necesita acceder a esos recursos, responder a la interfaz humana y las solicitudes. Por lo general, si no tiene una configuración de marco, tendrá que hacer todo por su cuenta: definir los recursos que se utilizarán en su proyecto, definir sus estructuras, su mecanismo de acceso, manejo de errores y todos los demás detalles minuciosos. Después de eso, ¡tendrás que gestionar la interacción de los humanos con tu proyecto, que es otra tarea desordenada! Entonces, lo que hace un marco es que le proporciona un conjunto de tipos de recursos predefinidos, su mecanismo de acceso y una gestión completa (configuración). Le ayuda a eliminar la necesidad de escribir el proceso completo de configuración de la arquitectura de bajo nivel de su proyecto y simplemente centrarse en lo que es importante. Esto se debe a que la mayoría del proyecto de software, después de la categorización, requiere un conjunto similar de configuraciones y recursos. Por lo tanto, si ya los tiene en su lugar, ¡no tardaría en configurar y ejecutar su proyecto! Por ejemplo, codeigniter o Laravel son marcos PHP para permitirle crear proyectos completos en PHP. Para comenzar, todo lo que necesita hacer es configurar la configuración en archivos predefinidos (rutas, base de datos, etc.), definir los módulos (modelos + controladores + vistas) y ¡listo! Algunos otros ejemplos de marcos son NodeJS, ROR, YII, Bootstrap, etc.
  2. API: la interfaz de programación de aplicaciones, tal como está, se usa normalmente para la comunicación entre dos aplicaciones diferentes. Por ejemplo, suponga que tiene una aplicación que requiere mostrar detalles en el mapa. Por lo tanto, puede utilizar la API de mapas de Google para obtener datos sobre una ubicación. Las API generalmente son proporcionadas por proveedores (o empresas, si puede decirlo) cuando desean facilitar la comunicación de sus datos / servicios a terceros. Las API también podrían ser necesarias cuando dos aplicaciones diferentes (tipo de) podrían necesitar datos / servicio uno del otro. Dado que una aplicación móvil es una aplicación independiente que actúa sobre los datos de otro servidor, generalmente emplea API para la comunicación.
  3. Bibliotecas: como su nombre indica, las bibliotecas contienen lo que nuestros antepasados ​​nos han dejado en términos de conocimiento / educación. Cuando se trata de ingeniería de software, la biblioteca es una colección de código / herramienta / software que pueden ser utilizados de forma independiente por terceros. Son diferentes de las funciones habituales en que las funciones suelen proporcionar funcionalidades singulares, mientras que las bibliotecas son un grupo de colección de tareas. Ahora, puede preguntar por qué necesita bibliotecas. Bueno, los necesitas porque no querrás trabajar en algo que ya está allí. ¡Es como ignorar los alfabetos y luego recrear el idioma inglés usando los mismos alfabetos! Sin embargo, no pretendo desanimarte. ¡Puede optimizar las bibliotecas existentes o crear las suyas propias si pudiera proponer una solución mejor u óptima que las existentes!
  4. MVC y MVVM: MVC significa Model-View-Controller y MVVM significa Model-View-ViewModel. MVC fue un concepto introducido en marcos para separar la lógica de negocios de la implementación de código. Verá, un proyecto evoluciona con el tiempo con cambios en los requisitos y no puede reescribir el proyecto completo una y otra vez. No porque sea aburrido y agotador, también es una completa pérdida de esfuerzo. Por lo tanto, normalmente los proyectos se distribuyen en tres partes: Modelo (que implementa la lógica de negocios), la Vista (que ve el usuario final) y el Controlador (que define cómo y cuándo verá las vistas el usuario final; también interactúa con el Modelo para obtener los datos). Entonces, dado que la lógica de negocios se implementa en Modelos, ¡probablemente lo único que podría requerir modificaciones con cambios en el modelo de negocios podrían ser los modelos! Mira, allí se ahorra mucho tiempo, dinero y esfuerzo. Lea sobre MVVM aquí

Espero que esto te ayude. Además, tenga en cuenta que ninguna de las definiciones anteriores son definiciones estándar. Acabo de intentar darle una explicación de lo que significan estos términos en la industria del software.

Hay muchas razones para usar marcos, API, bibliotecas y patrones MV *. Algunos de ellos son:

  1. Para no volver a inventar la rueda A menudo usa la biblioteca, el marco o la API, a menudo combinados. No siempre es el caso y todavía es necesario escribir cosas personalizadas (no solo ensamblar), pero este es el tema de todo el artículo.
  2. Para acelerar el trabajo, las cosas complejas pueden tomar mucho trabajo para escribir y si todos los demás usan herramientas listas para usar, simplemente también debe ofrecer capacidades competitivas en términos de tiempo / resultado.
  3. Para usar soluciones No eres la persona perfecta para escribir desde cero. Como si quisiera agregar reconocimiento facial a la aplicación, pero ahora no es biométrica, ni desea especializarse en eso. Luego puede usar el componente prefabricado.

MVC, MVVM y otros MV * son el tema para un artículo separado. Puede encontrar muchas discusiones en StackOverflow y publicaciones de blog sobre eso. También depende del contexto. En resumen, el uso de tales patrones arquitectónicos permite crear una aplicación de manera consistente con la extracción de menos cabello de la cabeza. Por supuesto, hay mejores y peores opciones. Esos cambios con el tiempo y hay muchas opiniones sobre una tecnología sobre la otra.

Definiciones simplificadas: tenga en cuenta que la forma en que las personas ven esas cosas es cautelosa, así que consulte varias fuentes para obtener una visión más clara sobre qué es qué:

Biblioteca: conjunto de ayudantes y herramientas escritos de manera coherente (debería ser, no siempre es el caso).

Marco: actúa como un andamiaje para su aplicación con un conjunto dedicado de herramientas y flujos de trabajo.

API: clases, métodos, funciones, URL expuestas para comunicarse con otras aplicaciones / servicios. Aunque el término también se usa en relación con bibliotecas y marcos. También hay separación para API interna y externa. Si lees que alguna aplicación / servicio proporciona API, es externa.

More Interesting

¿Qué se debe esperar con una carrera en desarrollo de software?

Imagine un freelance de desarrollo de software que ha adquirido un proyecto extremadamente importante que requiere un equipo. Sin embargo, el prototipo supera la financiación inicial. ¿Cuál es el mejor enfoque para darse cuenta del éxito del proyecto?

¿Cuál será el futuro de Robotic Process Automation como desarrollador de software en la industria de TI en India?

Soy un desarrollador de software pero débil en algoritmo y estructura de datos. ¿Cómo puedo mejorar en los próximos seis meses?

¿Qué hace un desarrollador de software en principio? Mi designación es esa también, pero solo puedo hacer desarrollo web en el trabajo.

¿Qué tipo de laptop recomiendas para un desarrollador de software?

Cómo elegir entre trabajar de forma remota para una startup o ser un consultor desarrollador de software para una gran empresa

¿Qué tan importante es la universidad si quiero ser desarrollador de software?

¿Cuál es la mejor decisión de su carrera de desarrollo de software?

Cómo iniciar un negocio de desarrollo de software en Silicon Valley

¿Qué habilidades les faltan a los desarrolladores de software?

¿Cuáles son algunas habilidades que aprende como desarrollador de software que son transferibles a la vida real?

¿Está bien si voy de puerta en puerta con un currículum para un trabajo de desarrollador de software?

Imagine que tiene un hijo, y él le pide tres cosas que debe hacer para convertirse en un gran desarrollador. ¿Qué le dirías a él?

¿Qué proceso de desarrollo de software no es adecuado para un inicio de software?