El propósito de este blog es explicar cuales son los Paradigmas y Lenguajes de Programación
lunes, 28 de septiembre de 2020
Importancia de la Calidad en el desarrollo de Software
Los Lenguajes de Programación
1. Python
Sitios web conocidos como SemRush y Reddit están desarrollados con Python
2. Java
Modelos Ágiles
Modelos
Las
metodologías ágiles son métodos de desarrollo de software en los que las
necesidades y soluciones evolucionan a través de una colaboración estrecha
entre equipos multidisciplinarios. Se caracterizan por enfatizar la
comunicación frente a la documentación, por el desarrollo evolutivo y por su flexibilidad.
Características
-
Basadas en heurísticas provenientes de prácticas de producción de código
-
Especialmente preparados para cambios durante el proyecto - Impuestas
internamente (por el equipo) - Proceso menos controlado, con pocos principios
-
No existe contrato tradicional o al menos es bastante flexible
-
El cliente es parte del equipo de desarrollo
-
Grupos pequeños (<10 integrantes) y trabajando en el mismo sitio
-
Pocos artefactos
-
Pocos roles
- Menos énfasis en la arquitectura del software
Descripción
Un proceso es ágil cuando el desarrollo de software es:
- Incremental. Entregas pequeñas de software, con ciclos rápidos.
- Cooperativo. Cliente y desarrolladores trabajan juntos constantemente con una cercana comunicación.
- Sencillo. El método en sí mismo es simple, fácil de aprender y modificar. Está bien documentado y es adaptable. Permite realizar cambios de último momento.
- Poca documentación.
- Simplicidad.
- Análisis como una actividad constante.
- Diseño evolutivo.
- Integraciones
- Testeos diarios
Ventajas
- El cliente, si quiere colaborar, puede observar cómo va avanzando el proyecto, y por supuesto, opinar sobre su evolución gracias a las numerosas reuniones que realiza el equipo con el cliente. Esto le da tranquilidad.
- Su ciclo de vida es simple y fácil de entender: captura de requisitos, diseño de la solución, configuración / desarrollo, test, implementación y mantenimiento.
- Su aproximación es “disciplinada”: Basada en una definición exhaustiva del trabajo, una revisión sistemática en hitos y énfasis en el control y la documentación del proyecto.
- Importancia de la simplicidad al eliminar trabajo innecesario
- Atención continua a la excelencia técnica y al buen diseño.
- Mejora continua de los procesos y el equipo de desarrollo.
- Evita malentendidos de requerimientos entre el cliente y el equipo.
- Cada componente del producto final ha sido probado y satisface los requerimientos.
Desventajas
- Problemas derivados de la comunicación oral. No hace falta decir que algo que está escrito “no se puede borrar”, en cambio, algo dicho es muy fácil crear ambigüedad.
- Fuerte dependencia de las personas.
- Falta de reusabilidad derivada de la falta de documentación
- Restricciones en cuanto a tamaño de los proyectos
- Problemas derivados del fracaso de los proyectos ágiles. Si un proyecto ágil fracasa no hay documentación o hay muy poca; lo mismo ocurre con el diseño. La comprensión del sistema se queda en las mentes de los desarrolladores.
- Cuanto más tarde se descubren este tipo de faltas de alineamiento entre necesidades y soluciones aportadas, más complejo es reconducirlas y más tiempo se tarda en hacerlo.
- Fuerte dependencia de las personas. Como se evita en lo posible la documentación y los diseños convencionales, los proyectos ágiles dependen críticamente de las personas.
- En consecuencia, en este tipo de proyectos la planificación puede ser engañosa y se corre el riesgo de que aparezca lo que se conoce como “deuda técnica”.
- Cambios. Los modelos de datos son “pesados” y no pueden cambiarse así como así solo porque el cliente que ira incorporar más funciones al sistema.
- Problemas derivados del fracaso de los proyectos ágiles. Si un proyecto ágil fracasa no hay documentación o hay muy poca; lo mismo ocurre con el diseño. La comprensión del sistema se queda en las mentes de los desarrolladores.
Como funciona
El término general desarrollo ágil de software se refiere a métodos y prácticas de desarrollo de software que brindan soluciones a través de la colaboración entre equipos auto-organizados y multifuncionales.
Los métodos ágiles de desarrollo de software promueven:
- Gestión disciplinada del proyecto.
- Filosofías de liderazgo que fomentan el trabajo en equipo, la auto-organización y la responsabilidad.
- Buenas prácticas de ingeniería que permiten una entrega rápida de software de alta calidad
- Un enfoque empresarial que alinea las necesidades de sus clientes con los objetivos de su empresa.
- Cualquier proceso de desarrollo que alinee su metodología con el Manifiesto Ágil es un desarrollo ágil.
El Manifiesto Ágil
En febrero de 2001, diecisiete profesionales del software con mentalidad independiente se reunieron para acuñar El Manifiesto Ágil. Esta proclamación del desarrollo ágil de software destaca los valores y principios fundamentales que los programadores deben cumplir al crear software ágil.
4 Valores del Manifiesto Ágil
- En lugar de centrarse principalmente en procesos y herramientas, los programadores deberían prestar más atención a los individuos y las interacciones.
- Un software en funcionamiento se valora más que una documentación completa del proceso de desarrollo.
- La negociación del contrato es menos vital que la colaboración del cliente
- En lugar de seguir estrictamente un plan, los programadores deben responder a cualquier cambio que se produzca
12 Principios del
Manifiesto Ágil
1. Satisfacer al cliente mediante la
entrega temprana y continua de un software valioso.
2. Acoger con beneplácito los requisitos
cambiantes, incluso en la etapa tardía en el desarrollo.
3. Entregar el trabajo del software con
la mayor frecuencia posible y en un plazo de tiempo más corto.
4. Los empresarios y desarrolladores
deben trabajar juntos a lo largo de todo el proyecto.
5. Construir proyectos en torno a
personas motivadas.
6. El método más eficiente y efectivo
para transmitir información al equipo de desarrollo y dentro del mismo es la
conversación cara a cara.
7. La medida principal del progreso es un
software en funcionamiento.
8. Los procesos ágiles promueven el
desarrollo sostenible.
9. La atención continua a la excelencia
técnica y al buen diseño aumenta la agilidad.
10. La simplicidad, el arte de maximizar
la cantidad de trabajo no realizado, es esencial.
11. Las mejores arquitecturas, requisitos
y diseños surgen de equipos auto-organizados.
12. A intervalos regulares, el equipo reflexiona
sobre cómo ser más eficaz, luego sintoniza y ajusta su comportamiento en
consecuencia.
Metodologías Ágiles
Cuando se trata de adherirse a estos valores y principios del manifiesto, los métodos Scrum y XP son los dos métodos comúnmente más utilizados.
Scrum
Este es un marco de gestión de proyectos que pone más énfasis en el progreso iterativo, el trabajo en equipo y la responsabilidad.
El marco de desarrollo de software XP tiene como objetivo mejorar la calidad del
software y la capacidad de respuesta a los requisitos cambiantes de los
clientes. Trabaja para producir software de alta calidad y aumentar la calidad
de vida de los miembros del equipo.
La metodología Ágil trabaja dando protagonismo a la entrega de un software en funcionamiento de forma iterativa e incremental, en lugar de crear requisitos rígidos a través de una gran planificación inicial. A cada fase del proyecto de desarrollo de software se le asigna un período de tiempo (sprint) en el que la tarea debe completarse. La tarea se considera completa una vez transcurrido el período asignado.
Modelo en Espiral
Modelo en Espiral
Es
uno de los modelos de ciclo de vida de desarrollo de software más importantes,
que proporciona soporte para la gestión de riesgos. Su nombre es dado debido a
que en su representación esquemática parece un espiral con muchos bucles. Cada
proyecto tiene su propio número de bucles. Y por otro lado, cada ciclo de la
espiral se llama Fase del proceso de desarrollo de software.
Este
modelo se caracteriza por iterar repetidamente un conjunto de procesos de
desarrollo elemental y eliminar el riesgo, por lo que se está reduciendo
activamente. Todo el proceso de desarrollo pasa repetidamente por ciertas
etapas. Cada iteración se llama espiral.
Fases
Las
cuatro fases principales son:
Determinar objetivos: Los objetivos se determinan
conjuntamente con el cliente. Al mismo tiempo, se discuten posibles
alternativas y se especifican las condiciones marco (por ejemplo, sistemas
operativos, entornos y lenguajes de programación).
Análisis y evaluación de
riesgos: Se
identifican y evalúan los riesgos potenciales. También se evalúan las
alternativas existentes. Los riesgos son registrados, evaluados y luego
reducidos utilizando prototipos, simulaciones y softwares de análisis. En este
ciclo, existen varios prototipos como plantillas de diseño o componentes
funcionales
Desarrollo y prueba: Los prototipos se amplían y se añaden
funcionalidades. El código real es escrito, probado y migrado a un entorno de
prueba varias veces hasta que el software pueda ser implementado en un entorno
productivo.
Planificación del
siguiente ciclo: El
siguiente ciclo se planifica al final de cada etapa. Si se producen errores, se
buscan soluciones, y si una alternativa es una mejor solución, se prefiere en
el siguiente ciclo.
Ventajas
- Este modelo permite el manejo de riesgo. Es una de las características que lo hacen más atractivo especialmente para administrar proyectos grandes y costosos. Además, este enfoque hace que el proyecto sea más transparente porque, por diseño, cada espiral debe ser revisada y analizada. Y finalmente, ese análisis y revisión constante hace que se puedan tratar los riesgos en cada fase.
- Es un modelo especialmente ventajoso en proyectos grandes y complejos.
- El cliente puede ver el producto en funcionamiento en las primeras etapas del ciclo de vida del desarrollo de software. Esto garantiza la satisfacción del cliente.
- Hay flexibilidad en los requisitos porque las solicitudes de cambio se pueden incorporar con precisión mediante el uso de este modelo.
- El proyecto se puede separar en varias partes y se pueden evaluar los riesgos de cada una, lo que disminuye las dificultades de gestión.
- Se pueden obtener estimaciones del proyecto en términos de cronograma, los costos se vuelven cada vez más realistas a medida que avanza el proyecto y se completan los bucles en espiral.
- Este enfoque ofrece un fuerte control de la documentación.
Desventajas
- El monitorio de riesgos requiere recursos adicionales, por eso es un modelo que se considera costoso. Cada espiral requiere experiencia específica, lo que hace que el proceso de gestión sea más complejo. En conclusión, el modelo no es recomendable para proyectos pequeños.
- Existe una gran cantidad de etapas intermedias, lo que se traduce en una gran cantidad de documentación.
- La gestión del tiempo puede ser difícil. Por lo general, la fecha de finalización de un proyecto no se conoce en las primeras etapas.
- El éxito del proyecto depende en gran medida del análisis de riesgo, por tanto, se requiere de una amplia experiencia y experimentación para no fracasar en el intento de implementar este modelo.
Como Funciona
El modelo de desarrollo en espiral se caracteriza por los siguientes ciclos (también cuadrantes):
Objetivo y determinación alternativa: Los objetivos se determinan conjuntamente con el cliente. Al mismo tiempo, se discuten posibles alternativas y se especifican las condiciones marco (por ejemplo, sistemas operativos, entornos y lenguajes de programación).
Análisis y evaluación de riesgos: Se identifican y evalúan los riesgos potenciales. También se evalúan las alternativas existentes. Los riesgos son registrados, evaluados y luego reducidos utilizando prototipos, simulaciones y softwares de análisis. En este ciclo, existen varios prototipos como plantillas de diseño o componentes funcionales
Desarrollo y prueba: Los prototipos se amplían y se añaden funcionalidades. El código real es escrito, probado y migrado a un entorno de prueba varias veces hasta que el software pueda ser implementado en un entorno productivo.
Planificación del siguiente ciclo: El siguiente ciclo se planifica al final de cada etapa. Si se producen errores, se buscan soluciones, y si una alternativa es una mejor solución, se prefiere en el siguiente ciclo.
la fuerza impulsora más importante del desarrollo en espiral es el análisis y la
evaluación deriesgos. Cualquier riesgo que amenace el proyecto debe ser
identificado desde el principio. El progreso del proyecto depende decisivamente
de cómo se puedan eliminar los riesgos. El proyecto se considera exitoso sólo
cuando no hay riesgos. El objetivo del ciclo es producir un producto en
continua mejora. El software o la aplicación se perfecciona constantemente. El
modelo en espiral es incremental, pero no necesariamente repetitivo. Las
repeticiones ocurren sólo cuando los riesgos, errores o conflictos amenazan el
proyecto. Entonces el producto tiene que pasar por un ciclo de nuevo, llamado
una iteración o repetición.
Modelo de Prototipo
Modelo de Prototipo
Un
prototipo en sentido genérico es una implementación parcial pero concreta de un
sistema o una parte del mismo que principalmente se crean para explorar
cuestiones sobre aspectos muy diversos del sistema durante el desarrollo del
mismo. En referencia a
una interfaz de usuario se realizan prototipos con la finalidad de explorar los
aspectos interactivos del sistema incluyendo la usabilidad, la accesibilidad
y/o la funcionalidad del mismo.
El
uso de los prototipos en el desarrollo de sistemas software no se limita sólo a
probar las interacciones que los usuarios deben realizar, sino que son útiles
también para otras actividades que se realizan durante el proceso, como por
ejemplo su gran utilidad en la fase de recogida o análisis de requisitos en
cuanto que amplía y mejora la información necesaria para el desarrollo del
sistema.
Características:
Son formidables herramientas de:
- Comunicación entre todos los componentes del equipo de desarrollo y los usuarios
- Participación, para integrar activamente a los usuarios en el desarrollo.
- Dan soporte a los diseñadores a la hora de escoger entre varias alternativas.
- Permiten a los diseñadores explorar diversos conceptos del diseño antes de establecer los definitivos.
- Permiten evaluar el sistema desde las primeras fases del desarrollo (facilitan la exploración de ideas sobre nuevos conceptos tecnológicos).
- Son esenciales para la documentación, tanto de conceptos funcionales del sistema como de tareas concretas del mismo.
- Son el primer paso para que ideas abstractas sean concretas, visibles y testables
- Fomentan la iteratividad.
- Mejoran la calidad y la completitud de las especificaciones funcionales del sistema.
- Son herramientas de propósito general, pues sirven para comprobar la fiabilidad técnica de una idea, clarificar requisitos que quedaron «indeterminados» o ver cómo responde con el resto de la aplicación.
Ventajas
- Modificación del Sistema en Etapas tempranas de su desarrollo: El éxito del uso del prototipo depende de qué tan pronto y con qué frecuencia se reciba la retroalimentación del usuario para hacer cambios y adecuarlos a las necesidades actuales.
- Permite al desarrollador darse cuenta de lo que requiere el cliente.
- Permite que el desarrollador se dé cuenta cómo va avanzando en trabajo
- Los cambios iniciales durante el desarrollo de un proyecto son menos costosos que si se realizan en etapas tardías, como el prototipo puede cambiar varias veces la flexibilidad y adaptabilidad son su esencia, la pauta del cambio la da la retroalimentación, la cual nos permite conocer la opinión del usuario sobre cambios a la entrada o salida de un proceso, que al evaluarla nos permite obtener los requerimientos y mejorar el sistema.
Desventajas
- Administración difícil: Dicha dificultad radica en manejar el prototipo como un proyecto dentro del Ciclo de Desarrollo de Sistema sin perder de vista cuál era su propósito.
- Adoptarlo como el sistema final: Los usuarios y profesionales de sistemas pueden considerar al prototipo como el sistema final cuando aún es incompleto e inadecuado.
- El desarrollador y el cliente tienen poca comunicación al inicio del proceso.
- Surgen cambios imprevistos que retrasan el progreso del prototipo.
Funcionalidades para el
desarrollo de proyectos
se comienza elaborando un prototipo del producto final: qué aspecto tendrá, cómo
funcionará. Para muchas interfaces de usuario, este modelo puede resultar tan
simple como unos dibujos con lápiz y papel o tan complejo como el propio código
operativo final. Para interfaces de hardware o estaciones de trabajo, el modelo
puede consistir en maquetas de espuma, caucho, cartón o cartulina. Cuanto más
próximo se encuentre el prototipo al producto real, mejor será la evaluación,
si bien se pueden obtener magníficos resultados con prototipos de baja
fidelidad.
cc Como Funciona
Fl
Paradigmas o Modelos de Desarrollo de Software son:
Modelo en Cascada:
también llamado Lineal secuencial, es el enfoque
metodológico que ordena rigurosamente las etapas del proceso para el desarrollo
de software, de tal forma que el inicio de cada etapa debe esperar a la
finalización de la etapa anterior.
Características:
- Es el más utilizado.
- Es una visión del proceso de desarrollo de software como una sucesión de etapas que produce productos intermedios.
- Si se cambia el orden de las fases, el producto final será de inferior calidad
- Cada fase genera documentación para la siguiente. Esta documentación debe ser aprobada.
- Una fase no comienza hasta que la anterior ha terminado.
- Requiere disponer de unos requisitos completos y precisos al principio del desarrollo.
- Dispone de unos requisitos completos y consistentes al principio del desarrollo.
- Debe ser un proyecto pequeño, en el que el período de congelación de los requisitos es corto, o un proyecto con unos requisitos bastante estables.
Ventajas
El modelo de cascada es el modelo más antiguo y más ampliamente utilizado en el campo de desarrollo de software. Hay ciertas ventajas del modelo de cascada, que hace que sea el modelo más amplio utilizado hasta el momento. Algunos de ellos se pueden enumerar como bajo
- No hace falta mencionar, es un modelo lineal y, por supuesto, los modelos lineales son las más simples a ser implementadas.
- La cantidad de recursos necesarios para implementar este modelo es mínimo.
- Una gran ventaja del modelo de cascada es que la documentación se produce en cada etapa del desarrollo del modelo de cascada. Esto hace que la comprensión del producto diseñar procedimiento más sencillo.
- Después de cada etapa importante de la codificación de software, las pruebas se realizan para comprobar el correcto funcionamiento del código.
Desventajas
La pregunta que hay que te preocupa ahora es que con tantas ventajas a la mano, lo que podría ser las posibles desventajas del modelo de cascada. Bueno, hay algunas desventajas de este modelo ampliamente aceptado también. Echemos un vistazo a algunos de ellos.
- Irónicamente, la mayor desventaja del modelo de cascada es uno de sus mayores ventajas. No se puede volver atrás, si la fase de diseño ha ido mal, las cosas pueden ser muy complicado en la fase de ejecución.
- Los Muchas veces, sucede que el cliente no es muy clara de lo que exactamente quiere del software. Cualquier cambio que se menciona en el medio puede causar mucha confusión.
- Los pequeños cambios o errores que surgen en el software completo puede causar mucho problema.
- La mayor desventaja del modelo de cascada es que hasta la etapa final del ciclo de desarrollo se ha completado, un modelo de trabajo del software no está en las manos del cliente. Por lo tanto, es difícil en condiciones de mencionar si lo que se ha diseñado es exactamente lo que había pedido.
Funcionalidades para el
desarrollo de proyectos
Debido
a la secuencia estrictamente lineal de las fases sucesivas de proyecto, el
modelo en cascada se adaptaría, en el mejor de los casos, a proyectos de
software de poca envergadura. Por el contrario, los procesos complejos de
varios niveles serían difícilmente representables con este modelo. Por este motivo,
con el paso del tiempo han ido surgiendo enfoques alternativos. Los
procedimientos estrictamente lineales se adaptan, así, especialmente bien a
proyectos de software pequeños, sencillos y claramente estructurados.
Cómo funciona
El
modelo original en cascada consta de siete fases sucesivas:
Requisitos del sistema: La primera fase se ocupa de los
requisitos que no están relacionados con el producto digital en sí, sino más
bien con aspectos relevantes para la empresa como el precio y la
disponibilidad. Aquí también se especifican los aspectos de documentación y
seguridad. En general, aquí se mencionan los requisitos no funcionales.
Requisitos de software: Los requisitos funcionales del
software se definen en la segunda fase. La pregunta sobre lo que el software
debe ser capaz de hacer se responde aquí y se aclara en
"especificaciones", que también incluye los resultados de la primera
fase.
Análisis de
requerimientos: En la
fase de análisis de requisitos, las funciones del software se diseccionan y
estructuran de modo que los elementos funcionales individuales y las unidades
funcionales puedan separarse entre sí. El análisis de necesidades tiene por
objeto examinar la viabilidad e importancia de las funciones. Los resultados de
esta fase son las especificaciones que contienen los requisitos que hay que
desarrollar.
Probando: La fase de implementación es seguida
por la prueba de todos los componentes de software, módulos y todo el sistema.
También se comprueba la integración en sistemas operativos específicos. Si se
producen errores y conflictos, deben repararse inmediatamente. Esto podría dar
lugar a un aumento de los costes globales, ya que los posibles errores pueden
atribuirse a diferentes fases y no siempre se producen en la fase anterior.
Lanzamiento: El software se implementa después de
la aceptación por parte del cliente. Las actualizaciones y el mantenimiento
pueden ser necesarios antes de que el producto entre en una tienda o se
entregue al cliente.
Varios equipos y expertos trabajan en estas etapas. Los contratistas, la gestión de proyectos y los desarrolladores senior suelen participar hasta la fase de implementación. Después de la implementación, los desarrolladores hacen el trabajo, por lo que las pruebas del software se manejan frecuentemente por separado, por ejemplo, por laboratorios de pruebas independientes. Expertos en marketing y servicios participan en parte en su lanzamiento. En las grandes empresas y corporaciones, se utiliza el método SDLC modificado y estructurado con mayor precisión (ciclo de vida de desarrollo del sistema), que se basa en el modelo en cascada. Existen también otras versiones de este modelo que, por ejemplo, introducen elementos repetitivos en forma de bucles para detectar y corregir errores y fallos en fases anteriores.
Paradigma
Importancia de la Calidad en el desarrollo de Software
Qué papel tiene la calidad en el desarrollo de aplicaciones de software. la calidad del software es “la concordancia con los requisitos func...
-
Modelo en Espiral Es uno de los modelos de ciclo de vida de desarrollo de software más importantes, que proporciona soporte para la gestió...
-
Modelos Ágiles Las metodologías ágiles son métodos de desarrollo de software en los que las necesidades y soluciones evolucionan a trav...
-
Modelo de Prototipo Un prototipo en sentido genérico es una implementación parcial pero concreta de un sistema o una parte del mismo que...