lunes, 28 de septiembre de 2020

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 funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente documentados y con las características implícitas que se espera de todo software desarrollado profesionalmente”.
La calidad del software o la obtención de un software con calidad implica la utilización de metodologías o procedimientos estándares para el análisis, diseño, programación y prueba del software que permitan uniformar la filosofía de trabajo, en aras de lograr una mayor confiabilidad, mantenibilidad y facilidad de prueba, a la vez que eleven la productividad, tanto para la labor de desarrollo como para el control de la calidad del software.
es el conjunto de cualidades que lo caracterizan y que determinan su utilidad y existencia. La calidad es sinónimo de eficiencia, flexibilidad, corrección, confiabilidad, mantenibilidad, portabilidad, usabilidad, seguridad e integridad. La calidad del software puede ser entendida como el grado con el cual el usuario percibe que el software satisface sus expectativas.



Los Lenguajes de Programación

Un lenguaje de programación es un sistema estructurado bajo un lenguaje formal (código) y diseñado principalmente para que las máquinas y computadoras puedan entender los algoritmos computacionales escritos por programadores. Los computadores solo entienden el lenguaje binario (cadenas interminables de números 1 y 0), para el hombre es complejo programar computadores mediante el sistema binario y es por eso que se crearon los lenguajes de programación, el lenguaje de programación se encarga entonces de convertir las instrucciones de los programadores de un lenguaje formal a unos (1) y ceros (0) para que las computadoras y las máquinas las puedan entender e interpretar.

Los lenguajes de programación se pueden clasificar de varias formas, los hay por nivel, y por la forma como se ejecutan.

Por nivel

Hay lenguajes de programación de alto nivel y lenguajes de bajo nivel. Los lenguajes de alto nivel permiten que con pocas palabras se logre hacer lo mismo que se logra con un lenguaje de bajo nivel.

Ejemplos de lenguajes de alto nivel: 
C++ Es un lenguaje de programación creado a mediados de los años 80 por Bjarne Stroustrup. En la actualidad, el C++ es unos de los lenguajes más usados por los desarrolladores de software., Python Es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible., Java Es un lenguaje de programación diseñado en el año 1995 por la empresa Sun Microsystems..

Ejemplos de lenguaje de bajo nivel: 
Assembler Es un lenguaje de programación desarrollado en el año de 1950, es considerado como un lenguaje de bajo nivel.

Por la forma como se ejecutan

Hay lenguajes compilados e interpretados. Los lenguajes compilados necesitan de un programa especial que lea el código fuente y cree un archivo binario ejecutable para una plataforma específica. Ejemplo: C++ Es un lenguaje de programación creado a mediados de los años 80 por Bjarne Stroustrup. En la actualidad, el C++ es unos de los lenguajes más usados por los desarrolladores de software., Pascal Es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth en el año 1970..

Los lenguajes interpretados necesitan de un programa que traduzca en directo el código fuente escrito a instrucciones de la plataforma en la que se ejecutan. Ejemplo Python Es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible., JavaScript.

Los lenguajes compilados son más rápidos, mientras que los lenguajes de programación interpretados son más lentos, esto debido a que al compilar un programa las ordenes son más entendibles para la computadora, mientras que al interpretarlo la máquina primero debe leer el código y convertir al paso las instrucciones a instrucciones de máquina entendibles para ella.

En la actualidad existen decenas de lenguajes de programación, algunos de los lenguajes utilizados hoy en día son php, ASP.net, ActionScript, Ada, Python Es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible., Delphi, C++ Es un lenguaje de programación creado a mediados de los años 80 por Bjarne Stroustrup. En la actualidad, el C++ es unos de los lenguajes más usados por los desarrolladores de software., Visual Basic, Matlab, Java Es un lenguaje de programación diseñado en el año 1995 por la empresa Sun Microsystems., JavaScript, etc.

Los Lenguajes de Programación mas Usados 

1. Python


Python es uno de los lenguajes de programación más usados actualmente y la tendencia sigue al alza. Lo tiene todo: es de código abierto, una sintaxis sencilla y fácil de entender, por lo que ahorra tiempo y recursos. Es uno de los mejores para iniciarse en el mundo de la programación.

Python es un lenguaje versátil que puede tener múltiples aplicaciones. Una de ellas, la Inteligencia Artificial, gracias a bibliotecas como Keras o TensorFlow. También puede ser de utilidad para aplicaciones de Big Data, gracias a bibliotecas de procesamiento de datos.

Este lenguaje de programación también se emplea en el desarrollo web, sobre todo, gracias a sus frameworks Django o Flash. Por poner algunos ejemplos, los sitios web de SemRush o Reddit están desarrollados con Python.

Sitios web conocidos como SemRush y Reddit están desarrollados con Python



2. Java

Java es un lenguaje de programación de propósito general, orientado a objetos y diseñado para tener las dependencias de implementación mínimas posibles. Con este lenguaje de programación se pueden crear aplicaciones y procesos en múltiples dispositivos.

Su ámbito de aplicación es amplísimo, por lo que permite crear software para dispositivos móviles, terminales de venta, cajeros automáticos, IoT (internet de las cosas), además de páginas web. 

Java fue el lenguaje por defecto para desarrollar aplicaciones para Android y, aunque Kotlin está ganando enteros día a día, Java sigue siendo muy necesario. 

Respecto a los juegos móviles, los primeros estaban desarrollados con Java. Hoy en día, Java sigue teniendo un papel importante en el mundo de los videojuegos, gracias a frameworks como JMonkeyEngine o Ardor 3D.



3. JavaScript

JavaScript es un lenguaje de programación interpretado, orientado a objetos y que se utiliza principalmente en la forma del lado del cliente.

Este lenguaje de programación sirve para todo: aplicaciones web, servidores, aplicaciones móviles… Su peculiaridad es que no necesita compilación ninguna, ya que es el propio navegador quién lee el código y realiza las acciones que le indica. Por este motivo, es uno de los lenguajes para crear páginas web cuando se quieren plantear elementos interactivos o más visuales.

Sin embargo, gracias a las prestaciones de HTML5 y las librerías de gráficos 2D y 3D, Javascript tiene también un papel relevante para el desarrollo de videojuegos, especialmente, si éste se ejecuta desde el navegador.


4. C#

C# es un lenguaje que sigue apareciendo en los listados de lenguajes de programación más usados. Creado por Microsoft, está presente en entornos empresariales, como instituciones gubernamentales, entidades bancarias o médicas.

Aunque más allá de este tipo de aplicaciones, tiene también usos muy versátiles: internet de las cosas, desarrollo de videojuegos, web o aplicaciones móviles. Para el desarrollo web, puedes utilizar el framework ASP.NET o la herramienta Xamarin para desarrollar aplicaciones nativas para Android e iOS.

Pero si lo tuyo son los videojuegos, C# es el lenguaje que debes dominar. Y es que una de las herramientas más potentes hoy en día como es Unity soporta varios lenguajes de forma nativa. Uno de ellos es C#.


5. PHP

PHP es un lenguaje de programación de propósito general de código del lado del servidor. Este lenguaje garantiza una buena comunicación entre web y servidor, por lo que las páginas web desarrolladas con este lenguaje son estables y con buen rendimiento. 

Actualmente, muchas páginas web están diseñadas con WordPress, que trabaja con PHP. Por ello, este lenguaje te permitirá desarrollar tanto proyectos como plugins para esta plataforma.


6. C/C++

C++ es un lenguaje de programación surgido como extensión del lenguaje C para que pudiese manipular objetos. Ambos lenguajes de programación siguen siendo utilizados en la actualidad en bases de datos, navegadores web, compiladores o videojuegos.


7. R

R es un lenguaje de programación enfocado al análisis estadístico. Se trata de uno de los lenguajes de programación más utilizados en investigación científica, aunque también tiene aplicaciones al machine learning, minería de datos, investigación biomédica o matemáticas financieras.


8. Objective-C

Objective-C es un lenguaje de programación basado en C, pero añadiéndole capacidades de programación orientada a objetos. Se trata de un lenguaje dirigido a crear aplicaciones en iOS y macOS.

Objective-C es un lenguaje más complejo y con diferencias con respecto a otros lenguajes como C# o Java. Esto hace que muchos programadores vean como una barrera para desarrollar para iOS o macOS comprender bien y usar Objective-C.


9. Swift

Este lenguaje de programación se mantiene dentro del TOP 10 de los más usados. Creado por Apple, está enfocado al desarrollo de aplicaciones para iOS y macOS. Pese a tener poca trayectoria, surgió en 2014, tiene una gran comunidad de desarrollo detrás, especialmente desde que pasó a ser de código abierto.


10. Matlab

Matlab es la abreviatura de Matrix Laboratory, laboratorio de matrices, y es un sistema de cómputo numérico que ofrece un IDE (Entorno de Desarrollo Integrado) con lenguaje de programación propio (M). 

Entre sus prestaciones se encuentran la representación de datos y funciones, creación de interfaz de usuario, la implementación de algoritmos o la comunicación con programas en otros lenguajes.

















Modelos Ágiles

 

Modelos Ágiles

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.    
    Sus elementos claves son:
  •      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.

     Programación extrema (XP)

     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.

Diseño de programas: El diseño técnico se implementa ahora con la ayuda de estas especificaciones de requisitos. Los componentes de esta fase también incluyen decisiones sobre la arquitectura de la información y las tecnologías aplicadas, tales como lenguajes de programación, bibliotecas de clases y secuencias de programas. El resultado del diseño del programa se registra generalmente en diagramas que describen el comportamiento teórico del software.

Implementación: Durante esta, las estructuras y los flujos de trabajo se implementan teniendo en cuenta las condiciones marco y los objetivos sistémicos. El diseño de software se convierte en un programa directamente relacionado con un sistema operativo, uno o más lenguajes de programación y la infraestructura. El resultado suele ser un software operativo, a menudo en versión beta.

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

Que es Paradigma: 
Para la Ingeniería de Software el paradigma es una agrupación de métodos, herramientas y procedimientos con el fin de describir un modelo.

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...