If Flutter

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

Universidad Andina del Cusco

Facultad de Ingeniería y Arquitectura


Escuela Profesional de Ingeniería de Sistemas

Ensayo de Desarrollo de Software

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

El propósito de este trabajo es explicar de manera detallada tanto los estándares de


software, la arquitectura de software y el ciclo de vida de objetos, comenzando con una
definición general de cada punto y luego profundizando en un tema específico relacionado
con el SDK Flutter que se ha estado cubriendo en las clases. El objetivo final es tener una
comprensión completa y aplicable de estos conceptos para ser capaces de utilizarlos en
futuros proyectos, ya sea utilizando Flutter o cualquier otro método de desarrollo de
aplicaciones.

2
2. DESARROLLO

2.1. Estándares de software:


2.1.1. ¿Qué son los estándares de softwares?

Son aquellas pautas que hacen posible definir un conjunto de criterios


de producción que rigen la manera cómo se aplica la Ingeniería de
Software. De modo que proveen los medios para que los procesos se
efectúen de la misma forma, obteniendo resultados exactos.

Son directrices o definiciones que hacen parte de la Ingeniería de


Software, disciplina tecnológica especializada en la producción de
programas y sistemas operativos. De su emisión se encargan
organismos específicos, quienes delinean el marco con el que se puede
comparar si un proceso es o no de calidad.

En otras palabras, para comprender la calidad del software, es


fundamental analizar y entender las características del producto en sí
mismo, así como también los procesos y prácticas utilizados para
desarrollarlo. Esto implica una comprensión detallada de los estándares
de desarrollo de software y de los criterios de calidad que deben
aplicarse para garantizar la eficiencia, eficacia, seguridad y fiabilidad
del software. Al final del proceso de desarrollo de software se obtiene
un producto único y complejo, que no puede ser comparado con un
producto físico tangible que “no se gasta con el uso y repararlo no
significa una restauración a su estado original sino corregir defectos
que estaban desde el momento de su entrega y que deben ser
solucionados en la etapa de mantenimiento” (Piattini, 1996).

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.

Aquí tenemos dos diferentes tipos de estándares de software, los que se


refieren como tal a los estándares de calidad de software que tenemos
como ejemplo:

● ISO/IEC 15504: También conocido como SPICE (Software


Process Improvement and Capability Determination), este
estándar establece un modelo para la evaluación y mejora de
los procesos de desarrollo de software. Su objetivo es
proporcionar una guía para la evaluación de la capacidad de los
procesos de software y la mejora de la calidad del software.
● IEEE 829: Este estándar establece las normas para la
documentación de pruebas de software, incluyendo planes de
prueba, casos de prueba y resultados de prueba. Su objetivo es
garantizar que la documentación de pruebas sea completa y
precisa.
● CMMI: El Modelo de Madurez de la Capacidad Integrada
(CMMI, por sus siglas en inglés) es un modelo de mejora de
procesos de software que proporciona una guía para el
desarrollo, mantenimiento y mejora de los procesos de
software. Su objetivo es ayudar a las organizaciones a mejorar
la calidad de su software y su capacidad para desarrollar
software de manera eficiente.
● ITIL: La Biblioteca de Infraestructura de Tecnología de la
Información (ITIL, por sus siglas en inglés) es un conjunto de
mejores prácticas para la gestión de servicios de TI. Si bien no
es específico para el software, incluye normas para la gestión
del ciclo de vida del software y la mejora continua 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:

● Estándares de codificación: conjuntos de normas y directrices


que se utilizan para escribir código de software consistente y
legible, tienen como objetivo mejorar la calidad del código,
facilitar la colaboración entre programadores y hacer que el
código sea más fácil de mantener y actualizar.
● Estándares de pruebas: Conjunto de reglas y convenciones para
la creación y ejecución de pruebas que garantizan que el
software se comporta como se espera y cumple con los
requisitos especificados.
● Patrones de diseño de software: Los patrones de diseño de
software se presentan en forma de plantillas que describen
cómo resolver un problema de diseño específico. Cada plantilla
incluye detalles sobre el problema que se está abordando, la
solución propuesta y cómo implementar esa solución.

Existen numerosos patrones de diseño de software, que abarcan


desde patrones estructurales, como el patrón de diseño MVC
(Modelo-Vista-Controlador), hasta patrones de
comportamiento, como el patrón de diseño Observador. Estos
patrones se utilizan comúnmente en el diseño y desarrollo de
software para mejorar la calidad del código, aumentar la
eficiencia del desarrollo y mejorar la capacidad de
mantenimiento del software.

● Estándares de documentación: Directrices para la creación de


documentación técnica que ayuda a los desarrolladores,
usuarios y otros interesados a entender el software y cómo
funciona.
● Estándares de mantenimiento: incluyen prácticas como la
gestión de cambios, la documentación, la prueba y el
seguimiento de errores. Estos estándares están diseñados para
garantizar que los cambios en el software se realicen de manera

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.

2.3.2. Arquitectura de software con respecto a Flutter


● Flutter proporciona una gran flexibilidad para elegir una arquitectura
de software adecuada para su proyecto, lo que significa que tiene la
capacidad de elegir entre varios patrones arquitectónicos conocidos,
como MVC (Model-View-Controller), MVVM
(Model-View-ViewModel), Clean Architecture, Redux y BLoC
(Business Logic Component). A continuación, se describen
brevemente algunos de los patrones arquitectónicos más populares en
Flutter:

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.

● En resumen, Flutter ofrece una gran flexibilidad para elegir la


arquitectura de software adecuada para su proyecto. La elección
dependerá del tamaño y complejidad de la aplicación, así como de las
preferencias personales del equipo de desarrollo
2.4. Metodologías
● Hay distintas formas de llevar a cabo el desarrollo de software, cada una con
características y enfoques propios. Cada metodología presenta sus propias
ventajas y desventajas, y la selección de una de ellas depende principalmente
del tipo de proyecto que se esté desarrollando y de las necesidades específicas
del equipo de trabajo involucrado.
Existen varias metodologías de desarrollo de software, algunas de las más
conocidas son:

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

● Pressman, R. S., & Maxim, B. R. (2015). Software Engineering: A


Practitioner's Approach. McGraw-Hill Education.

https://www.mlsu.ac.in/econtents/16_EBOOK-7th_ed_software_engineering_
a_practitioners_approach_by_roger_s._pressman_.pdf

● Piattini, Mario(2003) Calidad en el Desarrollo y Mantenimiento de Software.


Gestión de la Calidad de Software. España: Ra-Ma, 2003.

http://cotana.informatica.edu.bo/downloads/ld-calidad_del_producto_y_proces
o_software.pdf

● Axelos. (2023). ITIL 4: The evolution of service management. Recuperado de


https://www.axelos.com/certifications/itil-service-management/what-is-itil
● CMMI Institute. (2023). What is CMMI? Recuperado de

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

● Schwaber, K., & Sutherland, J. (2017). The Scrum guide. Scrum.org.

https://scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-US.pdf

● Flutter. «Introduction to Widgets». Accedido 8 de Mayo de 2023.

https://docs.flutter.dev/development/ui/widgets-intro.

12

También podría gustarte