No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
19 Hrs
51 Min
54 Seg

Elementos de un buen diseño de software

5/14
Recursos

Aportes 10

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Tipos de diseño

Al momento de construir aplicaciones hay dos tipos de perspectivas de diseño:

  • La perspectiva del equipo de UX/UI (Diseño de interfaz y experiencia del usuario, requerimientos, colores, botones, etc.)

  • La perspectiva del equipo de Ingeniería (Arquitectura, cantidad de personas en el equipo, esfuerzo en iteraciones, metodología, tiempos, etc.)

Características de un buen diseño
Desde la perspectiva del equipo de ingeniería.

  • La modularidad (Pedazos de software que funcionan como código cuyas responsabilidades están bien delimitadas).

  • Tolerancia a fallo (Capacidades para solucionar problemas que se puedan presentar en el funcionamiento de la aplicación).

  • Robustez (Funcionamiento de la aplicación ante situaciones de estrés como memoria insuficiente, bases de datos llenas, peticiones altas, etc.)

  • Seguridad (Políticas de seguridad, credenciales, accesos, etc.)

  • Usabilidad(La interfaz cumple su labor? Abarca todos los casos de Uso?)

  • Reusabilidad (Reusar piezas de software y crecimiento del mismo)

  • Extensibilidad (Capacidad de integrar nuevos cambios sin tener que modificar lo ya existente)

No se si lo abarque alguno de los elemetos mencionados, pero agregaria que debe ser facil de entender si entra un nuevo integrante al equipo.

Elementos del Diseño de Software 🎨

  • UI y UX: Diseño de la interfaz, experiencia del usuario, traducir indicaciones a elementos visibles
  • Equipo de Ing: Arquitectura, Stack, Team, Tiempo, Metodologías, etc…


Elementos del buen diseño de Software:

  1. Modularidad
  2. Tolerancia a fallos
  3. Robustez
  4. Seguridad
  5. Usabilidad
  6. Reusabilidad
  7. Extensibilidad (que si se añade más código, no afecte al código previo)

Algo que me gusta hacer mucho en entornos de Node js es hacer ‘export const’, en vez de ‘export default’.
Esto es para que cuando vayan a utilizar un pedazo de código de JS o TS, lo importen de la manera en que nombré a la función, en vez de darle un nombre cualquiera.

La tolerancia a fallos es lo que el usuario percibirá de la aplicación, tenemos que mandar respuestas adecuadas para cada tipo de error, y asi como los usuarios se dan cuenta de lo que falla, nosotros deberíamos de saber si una base de datos esta caída etc, algo como un monitoring

Que interesante informacion, actualmente estoy apostando por desarrollar una aplicacion y este curso me ha ayudado a esclarecer muchas dudas que tenia.

Podría ser una característica del buen diseño, la escalabilidad
Yo creo que hasta si los conocía y son aplicables en cualquier proyecto de la vida diaria, no nada mas en los de software; sin embargo, yo si me imaginaba que así eran estas cuestiones y que así siempre han sido. yo no le agregaría nada mas.
![]()**¿Cuáles son los tipos de diseño?**![]() Es una respuesta que es difícil obtener, no obstante, al momento de desarrollar se cuentan con dos (2) perspectivas: 1. Equipo UI 2. Equipo de Ingeniería. **Equipo UI** Aquí es a donde se toma en cuenta la parte de la experiencia del usuario, como va a interactuar el usuario con la aplicación, como se va a traducir un diseño a una interfaz, porque se utilizarán ciertos colores, como se le indicará al usuario que determinado objeto es un link, etc.  **Equipo de Ingeniería** Arquitectura, conformación del equipo, cantidad de personas que se van a necesitar, iteraciones del proyecto, metodología que será usada, tiempos de entrega del producto.  1. **Modularidad:** Todo fragmento de software debe encargarse de hacer exactamente “una sola cosa”, al momento de ejecutar los algoritmos debe ser totalmente puntual cuya responsabilidades deben estar bien definidas y delimitadas. 2. **Tolerancia a fallos:** Consiste en darle feedback al usuario cuando algo malo pasa en la aplicación, ¿se muestra alguna notificación?, se sabe el porqué no funciona la base de datos, la tolerancia a fallos de la capacidad de solventar cualquier percance en el funcionamiento de la aplicación, ejem: dejó de funcionar la BD, si no hay problema cuenta con una réplica, dejó de funcionar un servicio, no hay problema también se cuenta con una réplica.  3. **Robustez:** Cómo funciona la aplicación ante momentos de estrés, que pasa cuando la memoria no es suficiente en los servidores, que pasa cuando la base de datos no tiene espacio, etc. El software está listo para ello.  4. **Seguridad:** Nadie quiere ser víctima de un hackeo, esto es producto de las malas políticas de seguridad, no obstante, ¿está listo tu diseño para salir al exterior?, credenciales, accesos. etc 5. **Usabilidad:** Es quizá el elemento que está más relacionado al equipo de UX, la interfaz es ¿buena?, ¿sencilla?, ¿cumple con su función?, ¿está sobre todos los casos de uso de la aplicación?  6. **Reusabilidad:** ¿Las piezas de software pueden ser utilizadas en otros espacios?, ¿se considera que el software crecerá?  7. **Extensibilidad:** Es la capacidad del software de integrar nuevos cambios sin necesidad de modificar el software ya existente.
Por mencionar, puedo comentar algunos: * SRP(Prncipio de Responsabilidad Unica). * Escalabilidad, y * Documentación.