If Flutter
If Flutter
If Flutter
DESARROLLO DE SOFTWARE II
Docente:
- Mg. Ing. Jorge F. Campos Malpartida
Estudiante:
- Huamani Tupac Raul Adriano
Semestre: 2023 - I
ÍNDICE
ÍNDICE 1
1. INTRODUCCIÓN 2
2. DESARROLLO 3
2.1. Estándares de software: 3
2.1.1. ¿Qué son los estándares de softwares? 3
2.3. Arquitectura de software 6
2.3.1. ¿Qué es la arquitectura de software? 6
2.3.2. Arquitectura de software con respecto a Flutter 7
2.3.2.1. MVC (Model-View-Controller) 8
2.3.2.2. MVVM (Model-View-ViewModel): 8
2.3.2.3. Clean Architecture 8
2.3.2.4. Redux 8
2.3.2.5. BLoC 9
2.4. Metodologías 9
○ Scrum 10
○ Kanban 10
2.5. Ciclo de vida de objetos en Flutter 10
3. BIBLIOGRAFÍA 12
1
1. INTRODUCCIÓN
2
2. DESARROLLO
3
ISO/IEC 9126: Este estándar define un modelo de calidad del software
basado en seis características: funcionalidad, fiabilidad, usabilidad,
eficiencia, mantenibilidad y portabilidad. Su objetivo es proporcionar
una guía para la evaluación de la calidad del software.
4
Y a los que se refieren aspectos mas relacionados internamente, como el
código,documentación, etc. Como ejemplo tenemos:
5
controlada y que se mantenga un registro claro de los cambios
realizados.
2.2. Estándares de software con respecto a Flutter:
Flutter es un marco de desarrollo de aplicaciones móviles de código abierto
desarrollado por Google. Aunque Flutter es relativamente nuevo, ya existen
algunos estándares de software establecidos para este marco de trabajo. Estos
estándares están diseñados para garantizar que el software desarrollado en
Flutter sea de alta calidad y esté en línea con las mejores prácticas de la
industria del desarrollo de software.
Algunos de los estándares de software específicos de Flutter incluyen:
● Código limpio: El código limpio es un principio importante en
Flutter. Esto significa que el código debe ser fácil de leer, fácil
de entender y fácil de mantener. Para lograr esto, se recomienda
seguir las directrices de estilo de Dart y los patrones de diseño
recomendados.
● Pruebas de unidad: Las pruebas de unidad son una parte
importante del proceso de desarrollo de software en Flutter. Las
pruebas de unidad se utilizan para probar pequeñas partes del
código en aislamiento y garantizar que funcionan
correctamente antes de integrarlas en la aplicación.
● Arquitectura de software: Flutter proporciona una gran
flexibilidad en la elección de la arquitectura de software, pero
existen algunas arquitecturas recomendadas, como la
arquitectura BLoC (Business Logic Component).
● Documentación: Es importante mantener una documentación
clara y concisa para cualquier proyecto de Flutter. Esto ayuda a
otros desarrolladores a comprender el código y contribuir al
proyecto en el futuro.
Es importante destacar que los estándares de software de Flutter están en
constante evolución a medida que el marco de trabajo sigue desarrollándose.
Es importante mantenerse actualizado con las últimas mejores prácticas y
directrices para garantizar que el software desarrollado en Flutter sea de alta
calidad y esté en línea con las normas de la industria.
6
2.3. Arquitectura de software
2.3.1. ¿Qué es la arquitectura de software?
● La arquitectura de software se refiere al diseño de alto nivel de un
sistema de software, que define su estructura, componentes,
interacciones y principios fundamentales. Es una parte fundamental del
proceso de desarrollo de software, ya que proporciona una guía para la
construcción del sistema y su posterior evolución.
Según Bass, Clements y Kazman (2013), la arquitectura de software es
"el conjunto de estructuras necesarias para racionalizar los elementos
del software, y sus interacciones, en los que los elementos son
componentes de software, conexiones entre ellos, y restricciones que
se aplican a los componentes y conexiones" .La arquitectura de
software se ocupa de la organización del software en componentes, la
asignación de responsabilidades a cada componente y la definición de
las interfaces entre ellos.
7
2.3.2.1. MVC (Model-View-Controller): Este patrón divide la
aplicación en tres partes: el modelo, que representa los datos; la
vista, que es la interfaz de usuario; y el controlador, que actúa
como intermediario entre el modelo y la vista. Esta arquitectura
es útil para aplicaciones pequeñas y medianas, ya que es fácil
de implementar.
2.3.2.2. MVVM (Model-View-ViewModel): Este patrón es similar al
MVC, pero con la adición de un ViewModel, que se encarga de
manejar la lógica de negocio y la comunicación entre la vista y
el modelo. MVVM es una buena opción para aplicaciones más
grandes y complejas, ya que permite una mayor separación de
preocupaciones.
2.3.2.3. Clean Architecture: Este patrón se basa en la idea de dividir la
aplicación en capas, cada una con una responsabilidad
específica. La capa más interna es la capa de dominio, que
contiene la lógica de negocio. La capa siguiente es la capa de
infraestructura, que se encarga de interactuar con servicios
externos y bases de datos. La capa superior es la capa de
presentación, que es la interfaz de usuario. Clean Architecture
es una buena opción para aplicaciones grandes y escalables.
2.3.2.4. Redux: Este patrón se utiliza principalmente para aplicaciones
con una gran cantidad de datos que cambian con frecuencia.
Redux se basa en un flujo de datos unidireccional, lo que
significa que cualquier cambio en el estado de la aplicación se
realiza a través de un flujo de acciones que se propagan a través
de la aplicación. Redux es una buena opción para aplicaciones
grandes y complejas que necesitan una gestión avanzada del
estado.
8
2.3.2.5. BLoC (Business Logic Component): Este patrón se centra en la
separación de la lógica de negocio de la interfaz de usuario. La
idea es crear "bloques" que contienen la lógica de negocio y la
comunicación con servicios externos y bases de datos. Los
bloques se comunican con la interfaz de usuario a través de
flujos de datos. BLoC es una buena opción para aplicaciones
grandes y escalables.
9
○ Scrum: Es una metodología ágil de gestión de proyectos que se centra
en la colaboración, la autoorganización y la entrega continua de valor
al cliente. El desarrollo se divide en iteraciones cortas (sprints) y se
llevan a cabo reuniones diarias para mantener a todo el equipo
actualizado sobre el progreso del proyecto. Scrum se basa en el
concepto de backlog, una lista de funcionalidades que se deben
desarrollar y que se priorizan en función de su importancia para el
cliente.
○ Kanban: es una metodología que se centra en la optimización del flujo
de trabajo y en la mejora continua. Kanban utiliza un tablero visual que
muestra las tareas que se deben realizar, las que están en proceso y las
que ya han sido completadas. Cada tarea está representada por una
tarjeta que se mueve a través del tablero en función de su estado.
Kanban se basa en la idea de limitar el trabajo en progreso para evitar
la sobrecarga del equipo y mejorar la eficiencia.
2.5. Ciclo de vida de objetos en Flutter
● El ciclo de vida de objetos en Flutter es similar al de otros frameworks
de programación. Cada widget o objeto en una aplicación Flutter tiene
su propio ciclo de vida, que está determinado por los métodos de ciclo
de vida que se llaman en distintas etapas del proceso.
● En particular, una aplicación Flutter tiene un objeto de tipo
MaterialApp que es el widget principal y que controla el ciclo de vida
de la aplicación en su conjunto. Cuando se inicia la aplicación, se
llama al método createState() del widget MaterialApp para crear un
objeto de tipo State que es el que se encargará de manejar el ciclo de
vida de la aplicación.
En el ciclo de vida de un objeto en Flutter, hay varios métodos
importantes que se llaman en distintas etapas. El primer método que se
llama es el constructor, que se usa para crear el objeto y asignar valores
iniciales a sus propiedades. Luego, se llama al método initState(), que
se usa para realizar cualquier inicialización necesaria del objeto y
configurar su estado inicial.
A medida que la aplicación se ejecuta, pueden ocurrir eventos como la
interacción del usuario o la llegada de datos desde una API externa,
10
que pueden requerir cambios en el estado de los objetos de la
aplicación. En estos casos, se llama al método setState() para actualizar
el estado del objeto y redibujarlo en la pantalla.
● Finalmente, cuando el objeto ya no es necesario (por ejemplo, cuando
se cierra la aplicación o se cambia de pantalla), se llama al método
dispose() para liberar los recursos que se asignaron al objeto y realizar
cualquier limpieza necesaria antes de eliminar el objeto por completo
de la memoria.
Es importante entender el ciclo de vida de los objetos en Flutter para
poder desarrollar aplicaciones eficientes y que respondan
adecuadamente a los eventos y acciones del usuario.
11
3. BIBLIOGRAFÍA
https://www.mlsu.ac.in/econtents/16_EBOOK-7th_ed_software_engineering_
a_practitioners_approach_by_roger_s._pressman_.pdf
http://cotana.informatica.edu.bo/downloads/ld-calidad_del_producto_y_proces
o_software.pdf
https://cmmiinstitute.com/cmmi/intro
● Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1995). Design patterns:
elements of reusable object-oriented software. Addison-Wesley Professional.
http://www.javier8a.com/itc/bd1/articulo.pdf
● Bass, L., Clements, P., & Kazman, R. (2013). Software architecture in practice
(3rd ed.). Addison-Wesley.
https://edisciplinas.usp.br/pluginfile.php/5922722/mod_resource/content/1/20
13%20-%20Book%20-%20Bass%20%20Kazman-Software%20Architecture
%20in%20Practice%20%281%29.pdf
https://scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-US.pdf
https://docs.flutter.dev/development/ui/widgets-intro.
12